Gmail

【GAS】メールを検索する メール添付の請求書PDFを保存してチャットに通知②

前回のおさらい

前回はGoogle Apps Scriptのエディタをひらいて、ダークモードにするところまでやりました。


Googleのアカウントを取得して(=Gmailのアドレス取得と同じ)、Googleドライブをひらいて、新規のGoogle Apps Scriptプロジェクトを作成しましたね。

ついでにダークモードにしてイカツイ雰囲気も出してみました。


今回はダークなエディタに文字を打っていきます。

いよいよGoogle Apps Scriptを書くときがやってまいりました。

GmailAppsを使う

Google Apps ScriptでGmailの操作を行うときはGmailAppsを使います。

難しいことはありません。エディタにこのように書くだけです。

const searchGmail = () => {
  const gmail = GmailApp
}

GmailAppというのはGmailをGoogle Apps Scriptから操作するためのクラスで、gmailとしてインスタンス化されています。

gmailという変数にGmailを操作するための一式のツールがセットされるイメージです。

Google SpreadsheetやGoogle Document等も同じようにSpreadsheetApp、DocumentAppといったクラスがあります。


GmailAppクラスには様々なツールが用意されています。

GmailAppクラスに関するドキュメント


ためしに未読メールの件数を取得してみます。

const searchGmail = () => {
  const gmail = GmailApp
  const unreadMailCount = gmail.getInboxUnreadCount()
  console.log(unreadMailCount)
}


実行するときは「実行ボタン」か、「control + R」(マックの場合は「command + R」)です。

①実行する関数は今つくった「searchGmail」です。

②実行ログに出力された8というのが未読メールの件数です。

Gmailを検索する

GmailAppクラスにはメールを検索する機能もあります。

お目当ての請求書メールを検索して取得します。検索するときはメールの特徴をつかんでおくのが大事です。

請求書メールは下のような特徴があるものとします。

  • 送信者の名前:株式会社 インボイス送信元
  • 送信メールの件名:【請求書】送付のご案内
  • 送信のタイミング:月一回 月初5営業日以内
  • 請求書:メール本文、PDF


Gmailを検索するときはGmailAppクラスのsearchメソッドを利用します。


「送信者の名前」と「送信メールの件名」でメールを特定できそうなので、、、

const searchGmail = () => {
  const gmail = GmailApp
  const searchedMail = gmail.search('from:株式会社 インボイス送信元 subject: 【請求書】送付のご案内')
  console.log(searchedMail)
}


上のようにgmail.search()のカッコの中に

  • from: 株式会社 インボイス送信元
  • subject: 【請求書】送付のご案内

と2つのクエリ(検索条件)を設定すれば良さそうです。

ただ、このままでは今までに送られてきたすべての請求書メールが検索で引っかかってしまいます。

それだとうまくいきませんのでクエリ(検索条件)に「未読」を追加します。

const searchGmail = () => {
  const gmail = GmailApp
  const searchedMail = gmail.search('from:株式会社 インボイス送信元 subject: 【請求書】送付のご案内 is:unread')
  console.log(searchedMail)
}

is: unread は未読という意味のクエリ(検索条件)です。


実行結果は下のようになります。意味わからないと思いますが成功です。


このよくわからない文字列はなんだ?という方は下の記事を読んでみてください。


よくわからない文字列はスレッドオブジェクトの配列です。

GmailAppクラスのsearchメソッドを使って取得できるのはスレッドオブジェクトの配列なんですね。

クレーマー
クレーマー

嘘つくな、ゴルァ

さっきはメールを取得できるって言うたやないけ!


おやおや、クレームは受け付けませんよ。

Gmailは受け取ったメールをスレッドとして管理します。スレッドはGoogle Apps Scriptであつかうときにはオブジェクトとしてあつかうんです。ですから間違いではないんです。

さて、今回はメールを検索してスレッドオブジェクトの配列を取得するところまでいきました。

次回はメッセージオブジェクトから本文を取得します。

ゲッツ

Copied title and URL