Gmail添付ファイルのダウンロード
この記事では、GmailGetAttachmentsアクションを使って、
Gmailの添付ファイルをダウンロードする方法を紹介します。
このアクションは単体では使用できず、
GmailGetアクションのアウトプットを利用する必要があります。
GmailGetアクションがGmail for Google Workspaceアカウントでのみご利用いただけるアクションのため、
このアクションのご利用にも、同様にGmail for Google Workspaceアカウントが必要となります。
・GmailGetの説明はこちら
「GmailGetAttachments」添付ファイルをダウンロード
「Gmailオブジェクト(mail)」の指定方法

冒頭の通り、「Gmailオブジェクト」はGmailGetアクションからメールオブジェクトを取得して指定します。
アウトプット指定のシンプルなイメージとして、
GetItemFromList(リストから要素を取得)アクションを使った以下の設定例をご参照ください。
※GmailGetアクションのアウトプットについてはこちらもご参照ください

ワークフローの設定例
例えば、
「特定のアドレスから2021年9月に送られてきたメールの添付ファイルをダウンロードする」
という場合、下記手順にてワークフローを設定します。
(今回の例だと自分のアドレスを指定する形になります)

まず、GmailGetアクションで検索クエリを設定して、対象のメールを取得します。
GmailGetAttachmentアクションに
添付ファイルの存在しないメールを渡すとエラーが起きるため、
検索クエリで「添付ファイルが存在する(has:attachment)」という条件をつけておきます。
- 「プロバイダーID」を設定します。
「プロバイダーを選ぶ」ボタンをクリックすると、
作成済みのコネクションから簡単に選択できます。 - 「クエリを入力」に以下のクエリを入力します。
from:任意のアドレス after:2021/09/01 before:2021/10/01 has:attachment

ForEachアクションで、取得メールの数だけファイル保存の流れを繰り返すための設定をします。
- 「繰り返すリスト」にGmailGetのアウトプットを指定します。
- 「要素を格納する変数名」に任意の変数名を入れます。
メールだとわかる変数名がよいので、今回の例では「mail」とします。

2.で設定した繰り返しの中にGmailGetAttachmentsアクションをドラッグ&ドロップし、
添付ファイルの内容を取得します。
- 「Gmailオブジェクト」に2.でつけた変数名を指定します。

アクション説明の「取得データの形式」の通り、
GmailGetAttachmentsアクションのアウトプットはリスト形式のデータです。
リスト内の各添付ファイルデータに対して繰り返し処理を行うため、
ForEachアクションを設定します。
- 「繰り返すリスト」にGmailGetAttachmentsのアウトプットを指定します。
- 「要素を格納する変数名」に任意の変数名を入れます。
添付ファイルだとわかる変数名がよいので、今回の例では「attachment」とします。

「4.」で設定した繰り返しの中にSaveFileアクションをドラッグ&ドロップし、
添付ファイルを保存します。
「4.」で設定した変数には添付ファイルオブジェクトが入っており、
その中のpathの値を指定することでファイルデータをSaveFileアクションに渡すことができます。
※添付ファイルオブジェクトについては、アクションの説明の「補足1.」の説明をご参照ください。

指定には、変数もしくはGetValueWithKeyアクションを使います。
それぞれ以下のようなメリットがあるので、お好きな方で設定してください。
変数指定:ワークフローが簡潔になる
アクション指定:取得したpathの値がセッションログで確認できる
【設定手順】
- SaveFileアクションの「ファイル」にpathを指定します。
- 「ストレージプロバイダ」に任意の保存先を指定します。
■変数指定のパターン
■アクション指定のパターン

手順5.が変数の場合
# Gmailを取得
+gmail_get_1:
action>: GmailGet
query: 'from:任意のアドレス after:2021/09/01 has:attachment'
provider: gsmail_xxxx
limit: 10
meta:
display:
provider:
type: chip
label: 'Gmail for Google Workspace (xxxx)'
icon: gsmail
# 各要素について繰り返す
+for_each_1:
for_each>:
mail: +gmail_get_1
_do:
# 添付ファイルをダウンロード
+gmail_get_attachments_1:
action>: GmailGetAttachments
mail: ${mail}
ignoreError: false
# 各要素について繰り返す
+for_each_2:
for_each>:
attachment: +gmail_get_attachments_1
_do:
# ファイルを保存
+save_file_1:
action>: SaveFile
filename: ${attachment.path}
provider: local
createPath: false 手順5がアクションの場合
# Gmailを取得
+gmail_get_1:
action>: GmailGet
query: 'from:任意のアドレス after:2021/09/01 before:2021/10/01 has:attachment'
provider: gsmail_xxxx
limit: 10
meta:
display:
provider:
type: chip
label: 'Gmail for Google Workspace (xxxx)'
icon: gsmail
# 各要素について繰り返す
+for_each_1:
for_each>:
mail: +gmail_get_1
_do:
# 添付ファイルをダウンロード
+gmail_get_attachments_1:
action>: GmailGetAttachments
mail: ${mail}
ignoreError: false
# 各要素について繰り返す
+for_each_2:
for_each>:
attachment: +gmail_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
