今回は以下の記事を参考に、GASを使ってGmailから特定の文字列を件名に含むメールを取得し、スプレッドシートに貼り付ける方法をご紹介します。
参考:https://qiita.com/akatsuki174/items/d7471760754829ced7df
Gmailからスプレに!メールを取得する方法のアウトプットイメージ
今回はGmailでこのように特定の文字列「ご予約を受け付けました」をメール件名に含むスレッドを取得し、スプレッドシートに受信日時と件名文字列を書き出したいと思います。
GASでメールをスプレに書き出す方法
それでは早速、GASを使って特定の文字列を件名に含むメールを取得して、スプレッドシートに書き出す方法を見ていきましょう!
書き出すスプレッドシートのFMTを作成する
まずは取得したデータをどのように書き出したいのかを考えてFMTにします。
今回はいつ送られてきたメールかがわかるように受信日時と件名を取得するようにします。
ちなみにメール件名が「【お問い合わせ通知】GAS_メール件名取得方法」のように、冒頭にメールを識別する共通の文字列を置き、その後ろに分類分けした情報が来るように件名のFMTを設定しておけば集計もしやすくなりますね。
今回はシンプルに以下のようにしました。
スクリプトエディタを開く
例のごとく「ツール」>「スクリプトエディタ」からエディタを開きます。
スクリプトを貼り付ける
以下のコードを貼り付けて保存します。
なお今回は4月1日以降のメールを取得するので「var threads = GmailApp.search(‘subject:(‘ + mail_title + ‘) after:2021/4/1’);」という記述になっています。
件名の文字列を変更したいときは「mail_title」の後ろの文字列を、集計開始日を変更したい場合は上記のafter以降を修正しましょう。
//Gmail→スプレ/////
function getGmailToSpreadSheet() {
// 書き出すスプレッドシートをIDとシート名で定義
var ss = SpreadsheetApp.getActiveSpreadsheet();
//「test」という名前のシートを取得してsheetに代入
var sheet = ss.getSheetByName('test');
//取得するメールタイトルを指定
var mail_title = '"ご予約を受け付けました"';
// Gmailから指定した条件に合うスレッド(メール)を取得
var threads = GmailApp.search('subject:(' + mail_title + ') after:2021/4/1');
Logger.log(threads);
//A列の要素の数を取得して、A列に文字列の入っていない最終行を取得
var lastRow = sheet.getRange("A:A").getValues().filter(String).length + 1;
// 繰り返し処理
for(var n in threads){
var thread = threads[n];
// メール内の該当スレッド全てをmsgs変数に格納
var msgs = thread.getMessages();
msgs
for(m in msgs){
var msg = msgs[m];
var date = msg.getDate();
var subject = msg.getSubject();
var from = msg.getFrom();
if(mail_title.match(/ご予約を受け付けました/)){
sheet.getRange(lastRow,1).setValue(date);
sheet.getRange(lastRow,2).setValue(subject);
lastRow++
}
}
}
}
実行してみる
保存できたら再生ボタンを押しましょう。
すると以下のように承認を求められるので「許可を確認」をクリックします。
承認されてない開発者が提供するアプリが、プライベートな情報にアクセスすることになるから注意してね、という注意喚起が出ますが、アプリを作ってるのが自分なので許可します。
以下画像内の「詳細」をクリックしましょう。
詳細が表示されるので赤枠部分をクリックします。
なお途中でGoogleアカウントの選択も発生しますが、スプレッドシートを作成したアカウントを選択しましょう。
スクリプトの実行が完了すると、以下のように取得できてますね!
まとめ
いかがでしたか。
今回はGASを使ってメール件名に特定の文字列を含むメールのスレッドを、Gmailから取得してスプレッドシートに書き出す方法についてご紹介しました。
ちなみにこのコードを少しずつアップデートする予定なので、追加していった内容と書き方についてはシリーズ化して下にまとめていこうと思います。乞うご期待!
機能を少しずつ追加する方法
ここからは上記内容に少しずつ機能を追加していくアップデートをします。
シリーズ物として番号も入れてますので、順番に見ていってもらえると、徐々に書き方を学べるかなと思うので更新をお楽しみに!