メールから自動でfreee取引を作成しよう! その2 - 特定のラベルが付与されたメールをすべて取得する
前回の記事で取引作成の起点となるメールにラベルを付与しました。
Gmailの左側のメニューから該当のラベルを選択すると、新たに受信したメールにちゃんとラベルが付与されているのがわかります。
今回は、このラベルが付与されたすべてのメールをGoogle Apps Script(以降GAS)で取得する方法をご紹介します。
2種類(以上?)のアプローチ
ということで、特定のラベルが付与されたメールをすべて取得するスクリプトが必要になるのですが、この取得方法にも2種類(以上?)のアプローチが考えられます。
ラベル名からGmailLabelオブジェクトを取得し、そこから各メールを取得する方法とGmailの検索演算子を使って、検索条件にマッチしたメールを取得する方法です。
前者はGASのオブジェクトの概念をしっかり理解していると使いやすいのですが、今回はそもそも、ラベル付与の段階で検索クエリでフィルタをかけているので、後者の方法でメールを取得してみます。
検索演算子とは
検索演算子は、特定の条件に基づいてメールを検索し、フィルタリングするための検索クエリです。
例えば、「from:example@example.com」は「example@example.com」から送られたメールを検索します。
さらに複雑な条件を指定することも可能で、例えば「subject:(請求書 OR 納品書)」とすることで、件名に「請求書」または「納品書」が含まれるメールを検索することができます。
これらの検索演算子を利用することで、Gmail内で自動的にラベルを付与し、特定のメールだけをGASで処理するという自動化がスムーズに行えます。
件名と送信者でフィルタリング
あるサービスから、「ご利用料金のお支払いを確認しました」といった件名で決済確定のメールが届きます。
件名だけでのフィルタリングだと他のサービスのメールも合致してしまう可能性がありますので、送信者のアドレスでもフィルタをかけます。
送信者は、仮にsample@freeelover.comとします。
この場合の検索演算子は…
from:(sample@freeelover.com) subject:(ご利用料金のお支払いを確認しました)
となります。
2ヶ月以内に受信したメールに限定する
実務を考えると、「メールから自動でfreee取引を作成する」スクリプトは、定期実行することになります。
その場合、特定のラベルが付与されたメールをすべて取得するとスクリプトの実行に時間がかかってしまうので、検索演算子を使ってもうひと工夫します。
それは「2ヶ月以内に受信したメールに限定」してフィルタリングするという方法です。
このように期間指定をしたい場合は、newer_thanという検索演算子を用います。
newer_thanは、日(d)、月(m)、年(y)を指定し、その時期より新しいメールを検索するもので、時期より古いメールを検索するolder_thanもあります。
例えば、
1週間に1回のトリガーで、1週間分の該当するスレッド群を取得する場合
newer_than:7d(7日前から現在まで)
1日1回のトリガーで24時間以内の該当するスレッド群を取得する場合
newer_than:1d(24時間前から現在まで)
となります。
今回は、「freee取引作成」のサブラベルである「Conoha」が付いた2ヶ月以内に受信したメールなので、検索演算子は…
label:freee取引作成-conoha newer_than:2m
となります。
特定のラベルが付与されたメールをすべて取得する
ということでスクリプトはこちら
この記事が気に入ったらサポートをしてみませんか?