こんにちは

 

GAS(Google Apps Script)初心者ですが、たまたま開発を行う機会があったので、備忘録として書いていきます。

 

 

この記事で扱うのは、Gmailで送信されたメールをチェックして、Googleスプレッドシートに出力するスクリプトです。

 

 

本文の取り出し方にパターンがありますが、

今回は「本文の一行目を取り出す」パターンをご紹介したいと思います。

 

 

用途としては、例えば日次や月次でメールを送信している場合、Gmailと連携させて、

ちゃんと送信されたか送信メールを一覧で確認することが可能です。

 

 

例えば、メールの本文冒頭に、「○○様」などが書いてあれば、誰に送ったかは本文を見れば分かります。

 

※取得できるスレッド数または件数(?)に制限があるようなので、送信先が多い場合にはご注意ください。

 

 

■完成イメージ

 

 

まず最初に、Googleスプレッドシートを開きます。

 

 

次に、スクリプトエディタを開きます。

 

■ツール>スクリプトエディタ

 

 

こちらの画面が開きます。

 

 

以下のようにスクリプトを書きます。

※function名を分かりやすい名前に変えるのもありです。

 

 

■ソース

 

function myFunction() {
  /* Gmailから特定条件のスレッドを検索しメールを取り出す */
  var strTerms = 'GASテストメール';//検索したい件名
  var myThreads = GmailApp.search(strTerms,0,200);//スレッド数
  var myMsgs = GmailApp.getMessagesForThreads(myThreads); 
  var valMsgs = [];
  
  /* 各メールから日時、件名、内容、リンクを取り出す */
  for(var i=0;i<myMsgs.length;i++){
    for(var j=0;j<myMsgs[i].length;j++){
   
  var date = myMsgs[i][j].getDate();
  var subj = myMsgs[i][j].getSubject();
  var body = myMsgs[i][j].getPlainBody();
  var ary = body.split("\n");

  var tempo = ary[0].substring(0).replace('\r','');
  var perm = myThreads[i].getPermalink();
 
  valMsgs.push([date,subj,tempo,perm]);
  }
 }
 /* スプレッドシートに出力 */
 if(myMsgs.length>0){
   SpreadsheetApp.getActiveSheet().getRange(3, 1, valMsgs.length, 4).setValues(valMsgs);
  }

 

 

ここでは、「GASテストメール」という件名のメールを送ったとします。

※strTermsに検索したいメールの件名を設定してください。

 

 

続いて、スプレッドシートに実行用ボタンを追加します。

※ここは好みなので、読み飛ばしていただいても問題ありません。

 

 

■挿入>図形描画

 

 

好きな図形を選択します。

 

 

[テキストを編集する]を押下して、好きな文言を設定します。

 

 

[保存して終了]ボタンを押下します。

 

 

図形のを押下し、[スクリプトを割り当て]をクリックします。

 

 

function名を入力し、[OK]ボタンを押下します。

 

 

設定が完了したら、[実行]ボタンを押下します。

 

 

※スクリプトエディタのを押下することでも実行が可能です。

 

 

初回は以下のように警告メッセージがいくつか表示されるかもしれませんが、続行するしかありません。

 

 

これで、結果がスプレッドシートに出力されます。

 

ちなみに、リンクをクリックすると、対象のメールが開きます。

 

最後までお読みいただき、ありがとうございました音符