Google Apps Script 講座初級編「GASでGmailを検索する」
はじめに
後藤銃士です。腰痛でダウンしています。
さて今回は趣を変えまして、Gmail を取り扱います。図書館でオンライン読みたい本を予約しています。予約していた本が届くと、登録していた Gmail アドレスに通知がくるんですけどたまに見逃すことがありました。ですので今回、見逃さないようにするための仕組みづくりをしたいと思います。
私は現在 Line を使っていますので、Gmail に予約本が届いたら、Line で通知があると便利かなと。以下の流れで GAS を組めばいけそうな気がします。
基本はこの2つですね。あとは監視〜通知に至る処理が必要となります。この処理をつなぐところがイメージできればプログラミングは楽しくなりますね。
今回はまず、「GASでGmailを検索する」をやります。
この機能が役に立つのは
Gmail を GAS で操作してみたい人向け
講座スタート
いつもどおりコピペだけで大丈夫です。
新しくタブを開き「script.google.com」を入力してコードを書ける状態にして下さい。
そしていつもどおり1行目の3行目の間に
var query = '検索したい言葉'; var threads = GmailApp.search(query, 0, 5); threads.forEach(function(thread, i, array){ Logger.log(thread.getId()); Logger.log(thread.getLastMessageDate()); Logger.log(thread.getFirstMessageSubject()); });
をコピペして保存します。
それでは実行してログをみてみましょう。
このように検索した結果を取得することができます。 ご自身 Gmail で同じように検索してみると、一致しているのがわかると思います。
コードを見るとわかると思いますが、Gmail のメールって、やりとりを繰り返すとひとまとめにされてしまうのですね。それを「スレッド(thread)」と呼んでいます。スレッドって撚り糸(よりいと)ですから、1本の糸をよりあわせて1つの糸にする、つまりこの場合はメールをひとまとめに扱っている、というわけです。
で、スレッド単位で検索しておいて、そのうちの getFirstMessageSubject() を使ってそのスレッドの1番最初のメールのタイトルを取得してきています。受信しただけのメールでしたら大抵スレッドにはなっておらずメール=スレッドのような扱いにはなりますが、Gmail の仕様上こんなふうにスレッドを取得しています。
なお、スレッド検索に使っている
var threads = GmailApp.search(query, 0, 5);
の数字ですが、
0 … 検索開始位置です。0番目なので最初から(大抵の処理では一番最初は0から始まるケースが多い)
5 … 最大取得数。この場合最大5件のスレッドを取得する、という意味です
というわけであっさり取得することができましたね。例によって保存したければ、スプレッドシートに書き込むとよいですね。
それでは次回は、LINE での通知にチャンレジします。実装は簡単なんですけど、説明を書くのが大変なので時間がかかるかもしれませんが、しばしお待ち下さい。
今回は以上となります。
それでは、ご覧いただきありがとうございました。