Outlook添付ファイルのダウンロード
この記事では、OutlookGetAttachmentsアクションを使って、
Outlookの添付ファイルをダウンロードする方法を紹介します。
「OutlookGetAttachments」添付ファイルをダウンロード
「Outlookメールオブジェクト(mail)」の指定方法
「Outlookメールオブジェクト」にはOutlookGetアクションで取得したメールオブジェクトを指定します。
指定の流れのシンプルなイメージとして、
GetItemFromList(リストから要素を取得)アクションを使った以下の設定例をご参照ください。
※OutlookGetアクションのアウトプットについてはこちらもご参照ください。
OutlookGetAttachmentで必要となるのは、厳密にはメールオブジェクト内のidです。
OutlookGetのクエリで$selectを使うと、メールオブジェクトの内容は
bodyやtoなど必要な情報のみに絞り込むことができますが、
絞り込みの内容に関わらずidは必ず出力されるようになっています。
よって、select句の利用はOutlookGetAttachmentアクションの挙動には影響しないとお考えいただいて大丈夫です。
ワークフローの設定例
例えば、
「特定のアドレスから2021年9月に送られてきたメールの添付ファイルをダウンロードする」
という場合、下記手順にてワークフローを設定します。
(今回の例だと自分のアドレスを指定する形になります)
まず、OutlookGetアクションで検索クエリを設定して、対象のメールを取得します。
検索クエリには、「添付ファイルが存在する(hasAttachments eq true)」という条件をつけておきます。
- 「プロバイダーID」を設定します。
「プロバイダーを選ぶ」ボタンをクリックすると、
作成済みのコネクションから簡単に選択できます。 - 「クエリを入力」に以下のクエリを入力します。
クエリの説明はこちら
$filter=receivedDateTime ge 2021-09-01 and receivedDateTime le 2021-09-30 and from/emailAddress/address eq '任意のアドレス' and hasAttachments eq true
ForEachアクションで、取得メールの数だけファイル保存の流れを繰り返すための設定をします。
- 「繰り返すリスト」にOutlookGetのアウトプットを指定します。
- 「要素を格納する変数名」に任意の変数名を入れます。
メールだとわかる変数名がよいので、今回の例では「mail」とします。
2.で設定した繰り返しの中にOutlookGetAttachmentsアクションをドラッグ&ドロップし、
添付ファイルの内容を取得します。
- 「プロバイダーID」を設定します。
- 「Outlookメールオブジェクト」に2.でつけた変数名を指定します。
アクション説明の「取得データの形式」の通り、
OutlookGetAttachmentsアクションのアウトプットはリスト形式のデータです。
(Array=リストと捉えていただいて構いません)
リスト内の各添付ファイルデータに対して繰り返し処理を行うため、
ForEachアクションを設定します。
- 「繰り返すリスト」にOutlookGetAttachmentsのアウトプットを指定します。
- 「要素を格納する変数名」に任意の変数名を入れます。
添付ファイルだとわかる変数名がよいので、今回の例では「attachment」とします。
「4.」で設定した繰り返しの中にSaveFileアクションをドラッグ&ドロップし、
添付ファイルを保存します。
「4.」で設定した変数には添付ファイルオブジェクトが入っており、
その中のpathの値を指定することでファイルデータをSaveFileアクションに渡すことができます。
※添付ファイルオブジェクトについては、アクションの説明の「補足1.」の説明をご参照ください。
指定には、変数もしくはGetValueWithKeyアクションを使います。
それぞれ以下のようなメリットがあるので、お好きな方で設定してください。
変数指定:ワークフローが簡潔になる
アクション指定:取得したpathの値がセッションログで確認できる
【設定手順】
- SaveFileアクションの「ファイル」にpathを指定します。
- 「ストレージプロバイダ」に任意の保存先を指定します。
手順5.が変数の場合
# Outlookメールを取得する +outlook_get_1: action>: OutlookGet provider: outlook_xxxx folder: '' query: "$filter=receivedDateTime ge 2021-09-01 and receivedDateTime le 2021-09-30 and from/emailAddress/address eq '任意のアドレス' and hasAttachments eq true" limit: 10 meta: display: provider: type: chip label: 'Outlook (xxxx)' icon: outlook # 各要素について繰り返す +for_each_1: for_each>: mail: +outlook_get_1 _do: # 添付ファイルをダウンロード +outlook_get_attachments_1: action>: OutlookGetAttachments provider: outlook_xxxx mail: ${mail} meta: display: provider: type: chip label: 'Outlook (xxxx)' icon: outlook # 各要素について繰り返す +for_each_2: for_each>: attachment: +outlook_get_attachments_1 _do: # ファイルを保存 +save_file_1: action>: SaveFile filename: ${attachment.path} provider: local createPath: false
# Outlookメールを取得する +outlook_get_1: action>: OutlookGet provider: outlook_xxxx folder: '' query: "$filter=receivedDateTime ge 2021-09-01 and receivedDateTime le 2021-09-30 and from/emailAddress/address eq '任意のアドレス' and hasAttachments eq true" limit: 10 meta: display: provider: type: chip label: 'Outlook (xxxx)' icon: outlook # 各要素について繰り返す +for_each_1: for_each>: mail: +outlook_get_1 _do: # 添付ファイルをダウンロード +outlook_get_attachments_1: action>: OutlookGetAttachments provider: outlook_xxxx mail: ${mail} meta: display: provider: type: chip label: 'Outlook (xxxx)' icon: outlook # 各要素について繰り返す +for_each_2: for_each>: attachment: +outlook_get_attachments_1 _do: # オブジェクトのキーの値を取得 +get_value_with_key_1: action>: GetValueWithKey object: ${attachment} key: path # ファイルを保存 +save_file_1: action>: SaveFile filename: +get_value_with_key_1 provider: local createPath: false