【GAS】Gmailからスプレに特定の文字列を件名に含むメールを取得する方法

book_shelf-min GAS
GAS
この記事は約5分で読めます。
スポンサーリンク

今回は以下の記事を参考に、GASを使ってGmailから特定の文字列を件名に含むメールを取得し、スプレッドシートに貼り付ける方法をご紹介します。

参考:https://qiita.com/akatsuki174/items/d7471760754829ced7df

Gmailからスプレに!メールを取得する方法のアウトプットイメージ

今回はGmailでこのように特定の文字列「ご予約を受け付けました」をメール件名に含むスレッドを取得し、スプレッドシートに受信日時と件名文字列を書き出したいと思います。

gmailtosheet1

GASでメールをスプレに書き出す方法

それでは早速、GASを使って特定の文字列を件名に含むメールを取得して、スプレッドシートに書き出す方法を見ていきましょう!

書き出すスプレッドシートのFMTを作成する

まずは取得したデータをどのように書き出したいのかを考えてFMTにします。

今回はいつ送られてきたメールかがわかるように受信日時と件名を取得するようにします。
ちなみにメール件名が「【お問い合わせ通知】GAS_メール件名取得方法」のように、冒頭にメールを識別する共通の文字列を置き、その後ろに分類分けした情報が来るように件名のFMTを設定しておけば集計もしやすくなりますね。

今回はシンプルに以下のようにしました。

gmailtosheet2

スクリプトエディタを開く

例のごとく「ツール」>「スクリプトエディタ」からエディタを開きます。

gas3_1

スクリプトを貼り付ける

以下のコードを貼り付けて保存します。

なお今回は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++
   }
  }
 }
}

実行してみる

保存できたら再生ボタンを押しましょう。

gmailtosheet3

すると以下のように承認を求められるので「許可を確認」をクリックします。

gmailtosheet4

承認されてない開発者が提供するアプリが、プライベートな情報にアクセスすることになるから注意してね、という注意喚起が出ますが、アプリを作ってるのが自分なので許可します。
以下画像内の「詳細」をクリックしましょう。

gmailtosheet5

詳細が表示されるので赤枠部分をクリックします。

gmailtosheet6

なお途中でGoogleアカウントの選択も発生しますが、スプレッドシートを作成したアカウントを選択しましょう。

スクリプトの実行が完了すると、以下のように取得できてますね!

gmailtosheet7

まとめ

いかがでしたか。

今回はGASを使ってメール件名に特定の文字列を含むメールのスレッドを、Gmailから取得してスプレッドシートに書き出す方法についてご紹介しました。

ちなみにこのコードを少しずつアップデートする予定なので、追加していった内容と書き方についてはシリーズ化して下にまとめていこうと思います。乞うご期待!

機能を少しずつ追加する方法

ここからは上記内容に少しずつ機能を追加していくアップデートをします。

シリーズ物として番号も入れてますので、順番に見ていってもらえると、徐々に書き方を学べるかなと思うので更新をお楽しみに!

①件名を複数指定して取得する方法
【GAS】Gmail→スプレ/①件名を複数指定して取得する方法

 

タイトルとURLをコピーしました