はじめに
intra-martのローコード開発でメールにファイルを添付する手順に困りましたので、その備忘録。
実装時のポイントはローカルストレージ、バイナリ、配列となります。
作業手順概要
- メールに添付させたいファイルはintra-martのパブリックストレージに配置。
- パブリックストレージ取得
- ストレージファイル読み込み(バイナリ)
- ファイル名取得(定数での設定も可)
- テキストメール送信にマッピング
ファイルを添付するには何ステップか踏まなければいかず正直めんどくさい要件ですので、添付しない方向に持っていくのも腕の見せ所かもしれません。
詳細手順
パブリックストレージに添付したいファイルを配置
構築環境によって異なるかと思いますが、intra-martDBサーバの以下のような感じでパブリックストレージが準備されているものと思います。
D:\storage\public\storage\defult\<フォルダでまとめたい場合はフォルダ名>\<添付したいファイル(複数可)>
ロジックデザイナーでの実装
全体像
ロジックフローは基本設計は以下のとおりです。この流れなら添付させることができると思います。
パブリックストレージ取得
ストレージ情報を取得します。なお私も引っかかった注意点が2個あります。
- 前述した「D:\storage\public\storage\defult\<フォルダでまとめたい場合はフォルダ名>\<添付したいファイル(複数可)>」のdefultより下のパスを拡張子まで含めて設定する。以下の例だと「D:\storage\public\storage\defult\test\test.pdf」だが、test\test.pdfを設定値とする。
- 「バックスラッシュ」、「\」は使えない。「/」で設定する
バイナリ情報を取得
前段階で取得したストレージ情報のアウトプットをストレージファイル読み込み(バイナリ)のインプットに設定する
ファイル名称の取得
定数で設定するでもいいのですが、ファイルに変更があった場合、メンテ箇所が増えるので私はロジックで取得することにしました。テキストメール送信の必須項目ではないのですが、設定しないとエラーになるので事実上ファイル名は必須の値となります。
配列に格納
複数ファイルを添付させない場合は当プロセスは不要ですが、複数ファイルを添付する場合は配列変数に格納してあげる必要があります。複数ファイルがある場合は、配列オブジェクトと配列に追加したいオブジェクト分を準備してあげるのが手っ取り早いです。
- attchmentFilesの配列オブジェクト変数=テキストメール送信のインプットに利用
- attchmentFilesの単オブジェクト変数=配列オブジェクト変数に追加したい2つ目以上の添付ファイル情報を設定
なお注意点としてはPUSH関数を使うのですが、オブジェクト配下の「変数名」が必ず一致している必要があります。一致してないと各配列に値が設定されません。私事ですが、これに気づくまでかなりの労力を費やしました。
テキストメール送信
前段までのプロセスまでに設定した値をインプットに設定します。以下例は配列オブジェクトでのマッピングですが、1ファイルの添付ならオブジェクト配下の単項でのマッピングでも対応可能です。これでメール添付完了です。
まとめ
以上で、「社内SEなら知っておきたいintra-martでメールにファイルを添付する手順」でした。少々手間がかかるプロセスですので、添付ではなくURLやファイルパスで要件調整するのが一番いいと思います。(ロジックデザイナーを使う必要もなくなるので)