Robotic Crowd

Robotic Crowd

Gmailからのメール取得

Author: Ren Murayama 335 views

この記事では、GmailGetを使ってGmailから任意のメールを取得する方法について紹介します。

記事をお読みいただく前に

Gmailの仕様上、無料のGoogleアカウントでは「GmailGet」アクションはお使いいただけません。
Google Workspaceアカウントでご利用ください。

 「GmailGet」Gmailを取得する

Gmailからメールを取得する場合、「GmailGet」アクションを使用します。

アクションの使用には、Gmail for Google Workspaceとのコネクション作成が必要です。
こちらを参考に、コネクションを作成してください。

※アクションの設定項目について、詳細はドキュメントも合わせてご参照ください。

各メールの内容は、画像の通りオブジェクト形式で出力されます。
また、各メールはリスト形式にまとまっており、
GmailGetアクションのアウトプットは、このリストにあたります。
「ワークフローの設定例」では、オブジェクトからデータを取得する方法を紹介します。

※オブジェクトの詳しい説明はこちら
 リストの詳しい説明はこちら

GmailGetの注意点

デフォルトの設定では、取得メールは以下を含みます。
・自分が送信したメール
・他のアカウントと連携する設定をしていた場合、そのアカウント宛のメール
  (参考:Googleヘルプページ-他のアカウントのメールを確認する

自分のアカウントの受信メールに絞ってメールを取得したい場合、
「設定時のQ&A」の「1.取得するメールを絞り込みたい」をご参照ください。

 設定時のQ&A

「クエリを入力(query)」でクエリ(検索条件)を設定します。

クエリはGmailの手動検索で使うものと同じです。
条件ごとのクエリの書き方は以下のページをご参照ください。
https://support.google.com/mail/answer/7190?hl=ja

作成したクエリは、自分のGmailページで検証できます。


クエリ設定例

クエリ設定は以下のようになります。

・件名に「株式会社○○」を含む未読メール 
subject:株式会社○○ is:unread

・差出人のアドレスに@tutorial.comを含む
(チュートリアル社員からのメールである)
from:@tutorial.com

・自分の送信メール(例:sample@tutorial.com)を省く
from:-sample@tutorial.com

・宛先が特定のアドレス(例:sample@tutorial.com)である
(他のアカウントからの転送メールやCCメールを省く時) to:sample@tutorial.com
・差出人の名前に「太郎」もしくは「花子」が含まれる from:花子 OR from:太郎 ・2021/04/01のメール (04/01以降、かつ04/02より前に来たメール) after:2021/04/01 before:2021/04/02

時間単位のメール絞り込み設定方法

例えば直近30分以内のメールに絞って取得したい時、
「after 2021/04/01 14:30:00」といった形の指定はできません。

代わりに、UNIX時間というものを使って時間を指定します。
UNIX時間とは、「1970年1月1日午前0時(UTC)」からの経過秒数によって表される時間の単位です。
例えば日本時間で「2021/04/01 12:00:00」はUNIX時間で「1617246000」となります。
実行ごとに変動する数値になりますので、以下のような計算式で設定を行います。

設定例(30分前からのメールを取得)

①UNIX時間の計算

StoreValueアクションを使って設定します。
変数名は任意の文字列で構いません。
値は以下の通りです。

${moment().utcOffset('540').subtract(30,'minute').unix()}

(ここで使っているのはMoment.jsという時間計算のためのスクリプトです。
現在時を基準にして、任意の時間を取得できます。
こちらで説明しておりますので、ご参照ください。)

②GmailGetの設定

StoreValueアクションで保存した変数を使って、時間を設定します。
通常のクエリ設定と同様、「after:」を使って「30分前」を表現します。

GmailGetと併せて、
「GmailGetAttachments(添付ファイルをダウンロード)」アクションの設定が必要です。

こちらで設定方法を紹介しているので、ご確認ください。

 ワークフローの設定例

例えば次の条件でメールを1件に絞り込んで、
そのメールの本文を確認したい場合、
以下のように設定します。

【条件】
クエリ:
 ・件名に「株式会社チュートリアル」を含む
 ・未読メール
 ・「資料請求」ラベルのメール
取得件数:10件

以下の通り、「GmailGet」アクションを設定します。

  • プロバイダーIDを設定します。
    「プロバイダーIDを選ぶ」ボタンをクリックすると、作成済みのコネクションから簡単に選択できます。
  • クエリを以下の通り入力します。
subject:株式会社チュートリアル is:unread label:資料請求

GmailGetアクションのアウトプットは件数に関わらずリスト形式のため、
GetItemFromListアクションでリストからメールを取り出します。

  • 「リスト」にGmailGetのアウトプットを指定します
  • 「インデックス」に0を入力します

GetValueWithKeyアクションを使い、オブジェクトから項目の中身を取得します。

  • 「オブジェクト」にGetItemFromListのアウトプットを指定します
  • 「キー」にbodyを指定します

# Gmailを取得
+gmail_get_1:
  action>: GmailGet
  query: 'subject:株式会社チュートリアル is:unread label:資料請求'
  provider: gsmail_xxxx
  limit: 10
  meta:
    display:
      provider:
        type: chip
        label: 'Gmail for Google Workspace (xxxx)'
        icon: gsmail

# リストから要素を取得
+get_item_from_list_1:
  action>: GetItemFromList
  list: +gmail_get_1
  index: '0'

# オブジェクトのキーの値を取得
+get_value_with_key_1:
  action>: GetValueWithKey
  object: +get_item_from_list_1
  key: body

googleworkspace メール

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