Outlookからのメール取得
この記事ではOutlookGetを使って任意のOutlookメールを取得する方法について紹介します。
「OutlookGet」Outlookメールを取得する
デフォルトの設定では、取得メールは以下を含みます。
・自分が送信したメール
・転送の送受信メール、CC,BCCメール
自分のアカウント宛の受信メールに絞ってメールを取得したい場合、
「設定時のQ&A」の「2.取得するメールを絞り込みたい」をご参照ください。
設定時のQ&A
「クエリ」欄の設定で、取得するメール情報を絞り込むことができます。
①クエリの利用イメージ
クエリは、このイメージにおける行・列それぞれについて絞り込みや並べ替え等を行うための条件式にあたります。
以下では、絞り込みの代表的なパラメーターを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での検索をお試しいただく
・「ConvertJSONToArray」アクションと「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 ・2022年10月28日の9:25:00以降に取得したメールを全て取得する $filter=receivedDateTime ge 2022-10-28T09:25:00Z・あるスレッドのメールを全て取得する
$filter=conversationId eq 'スレッドのID'
④ $select _ 列(メールの項目)の絞り込み
(例)取得できる情報のうち、件名と本文のみを取得する。
列の絞り込みには、$selectを使います。
これにより、メールから指定した項目名のみを取得できます。
記述方法は以下の通りです。ポイントは以下2点です。
・項目が複数ある場合は、カンマで区切ります。
・クオーテーションの囲いは不要です。
$select = 項目名, 項目名, 項目名
例えば、以下のように記述します。
検索に使う項目名は「⑥指定可能なプロパティ(項目名)」で後述します。
$select = id, subject, body, isRead
⑤ $orderby _ 行(取得するメール)の並べ替え
取得するメールを$orderbyで昇順、もしくは降順で並べ替えることが可能です。
昇順
$orderby = 項目名 asc
降順
$orderby = 項目名 desc
例えば、以下のように記述します。
検索に使う項目名は「⑥指定可能なプロパティ(項目名)」で後述します。
・未読のメールのみを取得し、受信日時順で昇順に並べ替える
$filter= isRead eq false & $orderby = receivedDateTime asc
⑥検索可能なプロパティ(項目名)
$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 | 送信者がメッセージを送信するときに指定できる電子メール メッセージの重要度。 使用可能な値: low 、medium 、high 。 |
|
kind | メッセージの種類。 使用可能な値: contacts 、docs 、email 、faxes 、im 、journals 、meetings 、notes 、posts 、rssfeeds 、tasks 、voicemail 。 |
|
participants | SMTP アドレス、表示名、エイリアスとして指定されている、電子メール メッセージの from、to、cc、bcc フィールド。 | |
received | 電子メール メッセージが受信者によって受信された日付。 | |
recipients | SMTP アドレス、表示名、エイリアスとして指定されている、電子メール メッセージの to、cc、bcc フィールド。 | |
sent | 送信者によって電子メール メッセージが送信された日付。 | |
size | アイテムのサイズ (バイト数)。 | |
subject | 電子メール メッセージの件名行に含まれるテキスト。 | |
to | SMTP アドレス、表示名、エイリアスとして指定されている、電子メール メッセージの to フィールド。 |
クエリで特定の項目に対して$orderby(並べ替え)と$filter(絞り込み)を同時に使用すると下記エラーになる場合があります。
Error: Request failed with status code 400 The restriction or sort order is too complex for this operation.
これはOutlook側の仕様によるもので、特定の項目に対しては通常通りの指定ができなくなっています。
ただ、一定のルールに則ってクエリを作成するとエラーを回避することができます。
AUTOROの設定で意識する内容は以下の通りです。
- $orderby(並べ替え)をする項目は$filter(絞り込み)でも指定する必要がある
- $orderby(並べ替え)で複数の並べ替えをする場合は$filter(絞り込み)でも同じ順番で指定する必要がある
- $orderby(並べ替え)をする項目は$filter(絞り込み)の指定で、並べ替える項目、それ以外の項目の順番で指定する必要がある
使用する項目名は以下二つ
receivedDateTime=受信日時
hasAttachments=添付ファイル
・失敗例1
目的:添付ファイルが付いているもので絞り込み&受信日時を昇順で並べ替える $orderby=receivedDateTime asc & $filter= hasAttachments eq true 失敗理由:filterにreceivedDateTimeが無いため
・失敗例2
目的:添付ファイルが付いているもので受信日時が2020年1月1日以降のものに絞り込み&受信日時を昇順で並べ替える
$orderby=hasAttachments asc,receivedDateTime asc & $filter= receivedDateTime ge 2020-01-01T00:00:00Z and hasAttachments eq true
失敗理由:filterの項目の順序がorderbyの項目の順序と異なっているため
・失敗例3
目的:添付ファイルが付いているもので受信日時が2020年1月1日以降のものに絞り込み&受信日時を昇順で並べ替える $orderby=receivedDateTime asc & $filter= hasAttachments eq true and receivedDateTime ge 2020-01-01T00:00:00Z
失敗理由:filterの順序が「hasAttachments 」、「receivedDateTime」となっており、並べ替える項目がその他の項目より後ろになっているため
・成功例1
目的:添付ファイルが付いているもので受信日時が2020年1月1日以降のものに絞り込み&受信日時を昇順で並べ替える $orderby=receivedDateTime asc & $filter= receivedDateTime ge 2020-01-01T00:00:00Z and hasAttachments eq true
・成功例2
目的:添付ファイルが付いているもので受信日時が2020年1月1日以降のものに絞り込み&受信日時を昇順と添付ファイルの有無で並べ替える
$orderby=receivedDateTime asc,hasAttachments asc & $filter= receivedDateTime ge 2020-01-01T00:00:00Z and hasAttachments eq true
ワークフローの設定例
例えば次の条件であれば、
以下のように設定します。
【条件】
クエリ:件名に「オートロ株式会社」を含む
取得項目:件名、本文
フォルダ:「資料請求」というフォルダ
取得件数:10件
# 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 office36