Robotic Crowd

Robotic Crowd

Outlook添付ファイルのダウンロード

Author: Ren Murayama 251 views

この記事では、OutlookGetAttachmentsアクションを使って、
Outlookの添付ファイルをダウンロードする方法を紹介します。

「OutlookGetAttachments」添付ファイルをダウンロード

「Outlookメールオブジェクト(mail)」の指定方法

「Outlookメールオブジェクト」にはOutlookGetアクションで取得したメールオブジェクトを指定します。

指定の流れのシンプルなイメージとして、
GetItemFromList(リストから要素を取得)アクションを使った以下の設定例をご参照ください。
OutlookGetアクションのアウトプットについてはこちらもご参照ください。

当アクションのアウトプットは、各添付ファイルのデータがまとまったリストになります。
各添付ファイルは、下記の情報を持つオブジェクト形式で出力されます。

そのため、GetFileアクションのように、アウトプットを直接ファイルとして使うことはできません。

【格納されている情報】
 ・サイズ
 ・ファイル名
 ・ファイルの形式(pdfなど)
 ・Robotic Crowdに読み込んだ一時ファイルパス(GetFileのアウトプットにあたる)

※リスト形式のデータに関する説明はこちら
※オブジェクト形式のデータに関する説明はこちら

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
手順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:

        # オブジェクトのキーの値を取得
        +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
メール アウトルック オフィス365 Office365 Ofiice 添付ファイル

このページは役に立ちましたか?