【GAS】GmailApp.searchの使い方

GASgmail,GmailApp,GmailApp.search

Google Apps Script(GAS)では、Gmailの中から特定の条件で情報を取得する機能が用意されて言います。そのうち、検索機能を利用したGmailApp.searchの使った方法をご紹介します。

その他の手法は下記の記事で解説しています。

サンプルコード

下記のコードでは、『「未読」かつ「support@eczine.jpから受信」かつ「2021/12/2より前に受信」』に該当するメールを抽出しています。

function myFunction() {

  // 抽出条件指定
  const query = 'is:unread from:support@eczine.jp before:2021/12/2 ';

  const threads = GmailApp.search(query);

  for(const thread of threads){

    console.log(thread.getFirstMessageSubject());
  }

}
実行結果

[ Thu Nov 25 2021 18:31:58 GMT-0500 (Eastern Standard Time), '[12/3]ビデオ接客で成約率1.5倍!ECで購買意欲を喚起する接客術を伝授[ECzine News 号外]’ ]

[ Wed Nov 24 2021 23:47:27 GMT-0500 (Eastern Standard Time), '[締切まであと11日]アパレル・雑貨のOMO デジタル接客・アプリ活用術を伝授[ECzine News 号外]’ ]

GmailApp.searchとは

GmailApp.search(クエリ[,開始位置,取得数])

取得したい情報の条件指定を行えるのがGmailApp.searchです。

普段Gmail利用している人は、探したいメールを検索窓で条件指定して抽出する作業は自然と行っていると思いますが、GASでも全く同じ方法で抽出をかけることが可能です。それがGmailAppクラスsearchメソッドになります。

「クエリ」の部分に検索条件となるテキストを挿入すれば、検索窓で検索する時と同様に該当メールをスレッド化して抽出することができるのです。

重要概念:Gmailのスレッド

Gmailでは、指定したある条件(指定しなくてもよい)に一致するメールの一覧をスレッドといいます。

例えば特定件名やスター付きメール、30日以内に受信したメール等の条件を指定して、メールボックス内で一覧化することが可能です。

各スレッドでは開くとメッセージがカード状に時系列に重ねて表示されており、一つの条件についてのメッセージをまとめて見返せる便利な機能です。

検索演算子の種類

キーワードで検索をかけことが多いですが、どのような検索をかけることができるのかを知っていると、処理の幅が広がります。先に利用可能な演算子を確認しましょう。

演算子説明
from:送信者を指定するfrom:Tetsuo
to:受信者を指定するto:Mike
cc:Cc欄の受信者を指定するcc:Risa
bcc:Bcc欄の受信者を指定するBcc:Bob
subject:件名を検索対象にするsubject:会員登録のお知らせ
filename:添付ファイル名を検索対象にするfilename:examination.txt
OR または{ }OR条件を指定するfrom:Tetsuo OR to:Mike
AND または 半角スペースAND条件を指定するcc:Risa Bcc:Bob
-除外、NOT条件を指定する-from:Tetsuo
""完全一致"GASの基礎をまとめて学びたい方に!おすすめ記事3選"
()グループ化to:(Mike Tom)
is:状態を指定するis:unread未読
is:read既読
is:important重要
is:starredスター付き
is:sent送信済み
in:場所を指定するin:anywhereアカウント内すべて
in:inbox受信トレイ
in:drafts下書き
in:spam迷惑メール
in:trashゴミ箱
has:添付ファイルやリンクの存在を指定するhas:attachment添付ファイル
has:spreadsheetスプレッドシートリンク
has:driveドライブリンク
after:指定日以降を検索after:2021/12/22
before:指定日以前を検索before:2022/01/02
<引用元の書籍>

検索演算子の記述方法

上記の表のとおり、半角スペースを空けて演算子を記述すればAND条件での検索となります。

検索条件記述方法
「スター付き」かつ「未読」is:starred is:unread
「aaa@gmail.comから受信」かつ「添付ファイルあり」from:aaa@gmail.com has:attachment
「件名が『お問い合わせメール』」かつ
「2021年12月23日以降に受信」
subject:お問い合わせメール after:2021/12/23

検索ボックスでの検索方法を一緒なので、わからなくなったら一度メールボックスで条件指定してみてどのようなスクリプトになるのかを確認するのも一手でしょう。

これらを一つの文字列として記述し、GmailApp.searchの引数とすれば検索をかけることができます。

まとめ

GmailApp.searchを使ったGmailのスレッド抽出方法をご紹介しました。

  • スレッドとは特定条件に一致するメールの一覧のこと
  • 検索演算子を使って、searchメソッド(GmailApp.search)でメールの検索条件を指定する

Gmail連携の全体像は下記の記事で詳しく解説しているので是非参考にしてみてください。

この記事を書いた人

てつお
広告代理店出身、事業会社でWebマーケティングや開発の仕事をしている26歳です。プロフィール詳細はこちら
■Google広告認定資格|Google アナリティクス個人認定資格(GAIQ)|TOEIC920点