Robotic Crowd

Robotic Crowd

Outlookからのメール取得

Author: Ren Murayama 311 views

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

「OutlookGet」Outlookメールを取得する

Outlookメールを取得する場合、「OutlookGet」アクションを使用します。

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

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

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

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

OutlookGetの注意点

デフォルトの設定では、取得メールは以下を含みます。
・自分が送信したメール
・転送の送受信メール、CC,BCCメール

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

 設定時のQ&A

「最大取得件数(limit)」の項目に0を設定します。

「クエリ」欄の設定で、取得するメール情報を絞り込むことができます。

①クエリの利用イメージ

OutlookGetで取得できるメール情報は、以下のようなイメージで捉えることができます。
クエリは、このイメージにおける行・列それぞれについて絞り込みや並べ替え等を行うための条件式にあたります。

このイメージにおいて、行の絞り込みは取得するメールの選択、列の絞り込みは取得項目の選択に該当します。
以下では、絞り込みの代表的なパラメーターを3つ紹介します。
絞り込みの方向 パラメータ名 検索項目・ユースケース

(取得メール)
$search 件名、本文、宛先、送信元の部分一致検索

(取得メール)
$filter 件名の完全一致検索、受信期間での検索(例:9月中のメール)

(メールの項目)
$select body(本文), subject(件名)などに絞って結果を取得する

なお、クエリの基本的な書き方は「$パラメーター=値」で、
二つ以上の条件を使う場合は「&」で繋げます。

② $search _ 行(取得するメール)の絞り込み

(例)件名に〇〇という単語を含むメールのみ取得する。

行の絞り込みには、主に$searchを使用します。
$searchでは、指定した項目名に特定の検索ワードを含むメールのみに絞り込みが可能です。

記述方法は以下の通りです。ポイントは以下2点です。
・囲い文字はダブルクオーテーションにすること。
・複数の検索条件を設定する場合、大文字で「AND」または「OR」をダブルクオーテーション内で設定すること。

$search = "項目名 : 検索ワード AND 項目名 : 検索ワード"

例えば、以下のように記述します。
検索に使う項目名は「⑤指定可能なプロパティ(項目名)」で後述します。

・件名に「株式会社○○」を含む
$search = "subject : 株式会社〇〇"

・自分宛のメール
$search="to:自分のアドレス"
・件名に「報告」を含み、 かつ 差出人に「村山」を含む
$search = "subject : 報告 AND from : 村山"

・本文に「https://www.google.com」 もしくは 「https://www.yahoo.co.jp」を含む
$search = "body : https://www.google.com OR body : https://www.yahoo.co.jp"

※$searchで数字や日本語を使った検索を行うと、
想定通りに結果が取得できないことがあります。(例:「100件」「2年」)

これはoutlook側の検索の仕組みによるものですので、
以下をご検討ください。

・検索ワードの長さを調節する
$filterでの検索をお試しいただく
ComvertJSONToArrayアクションとConvertTableアクションを組み合わせて、別途フィルターをかける形になります。

③ $filter _ 行(取得するメール)の絞り込み

(例) 9月中のメールを取得する。

主に$selectで指定ができない以下のユースケースで使用します。

・件名や差出人の完全一致検索
・未読メールの検索
・指定期間中の受信メール検索

記述方法は基本的に以下の通りです。ポイントは以下3点です。
・演算子はOutlook規定のものを使うこと。
(詳細はこちらをご覧ください。)
・値が文字列の時、シングルクオーテーションで囲むこと。
・複数条件を指定する場合、それぞれを小文字のor/andでつなぐこと。

1. eq(等しい), ne(等しくない), ge(以上), le(以下)など
$filter = 参照するメールの項目 演算子 '比較する値'
2. startsWith(〜で始まる), endsWith(〜で終わる), contains(〜を含む)
$filter = 演算子(参照するメールの項目, 比較する値)

検索に使う項目名はGmailGetのアウトプットの項目名に等しいです。
参照したい項目が何かの項目の中に入っている(画像参照)時は、
大項目/中項目/小項目のように”/”で辿って指定をします。

例えば、以下のように記述します。

・差出人が任意の名前に完全一致する
$filter = from/mailAddress/name eq "名前"
・件名に任意の文字を含む $filter = contains(subject,"文字列") ・未読メールを取得する $filter = isRead eq false ・2021年9月の未読メールを全て取得する $filter=receivedDateTime ge 2021-09-01 and receivedDateTime le 2021-09-30 and isRead eq false

④ $select _ 列(メールの項目)の絞り込み

(例)取得できる情報のうち、件名と本文のみを取得する。

列の絞り込みには、$selectを使います。
これにより、メールから指定した項目名のみを取得できます。

記述方法は以下の通りです。ポイントは以下2点です。
・項目が複数ある場合は、カンマで区切ります。
・クオーテーションの囲いは不要です。

$select = 項目名, 項目名, 項目名

例えば、以下のように記述します。
検索に使う項目名は「⑤指定可能なプロパティ(項目名)」で後述します。

$select = id, subject, body, isRead
 

⑤検索可能なプロパティ(項目名)

$select, $searchで使えるプロパティを紹介します。
(引用元:https://docs.microsoft.com/ja-jp/graph/search-query-parameter?view=graph-rest-1.0#using-search-on-message-collections

検索可能な電子メール プロパティ 説明
attachment 電子メール メッセージに添付されているファイルの名前。  
bcc SMTP アドレス、表示名、エイリアスとして指定されている、電子メール メッセージの bcc フィールド。
body 電子メール メッセージの本文。
cc SMTP アドレス、表示名、エイリアスとして指定されている、電子メール メッセージの cc フィールド。
from SMTP アドレス、表示名、エイリアスとして指定されている、電子メール メッセージの送信者。
hasAttachment 電子メール メッセージに添付ファイルがあり、そのファイルがインラインの添付ファイルでない場合は true、そうでない場合は false。
importance 送信者がメッセージを送信するときに指定できる電子メール メッセージの重要度。 使用可能な値: lowmediumhigh
kind メッセージの種類。 使用可能な値: contactsdocsemailfaxesimjournalsmeetingsnotespostsrssfeedstasksvoicemail
participants SMTP アドレス、表示名、エイリアスとして指定されている、電子メール メッセージの from、to、cc、bcc フィールド。
received 電子メール メッセージが受信者によって受信された日付。
recipients SMTP アドレス、表示名、エイリアスとして指定されている、電子メール メッセージの to、cc、bcc フィールド。
sent 送信者によって電子メール メッセージが送信された日付。
size アイテムのサイズ (バイト数)。
subject 電子メール メッセージの件名行に含まれるテキスト。
to SMTP アドレス、表示名、エイリアスとして指定されている、電子メール メッセージの to フィールド。

 ワークフローの設定例

例えば次の条件であれば、
以下のように設定します。

【条件】
クエリ:件名に「株式会社チュートリアル」を含む
取得項目:件名、本文
フォルダ:「資料請求」というフォルダ
取得件数:10件

 

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

  • プロバイダーIDを設定します。
    「プロバイダーIDを選ぶ」ボタンをクリックすると、作成済みのコネクションから簡単に選択できます。
  •  メールフォルダにフォルダ名を入力します。
  • クエリを以下の通り入力します。
    $search = "subject : 【株式会社チュートリアル】" & $select = subject, body

【株式会社▲▲】、【株式会社□□】のメールを弾いて、【株式会社チュートリアル】のメールのみ取得できています。

# Outlookメールを取得する
+outlook_get_1:
  action>: OutlookGet
  provider: outlook_xxxx
  folder: '資料請求'
  query: '$search = "subject : 【株式会社チュートリアル】" & $select = subject, body'
  limit: 10
  meta:
    display:
      provider:
        type: chip
        label: 'Outlook (xxxx@outlook.jp)'
        icon: outlook

アウトルック メール オフィス office office365

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