GmailAppにgetHeaderメソッドが追加されました

今日もなにか新しいメソッド追加されていないかなと見て回るのですが、なかなか欲しいメソッドは追加されません。最近は新機能が続々リリースされているのですが、それにまつわるメソッドが装備されたりするのは結構後になってからだったりするので、それまでは、力技が必要だったりします。

2019年5月20日に、GmailAppクラスにgetHeaderメソッドが追加されました。GmailAppはMailAppとは異なり、GMailを操作する為のクラスなので、メールも送れますがメッセージ内容を取得して、なんやかんやすることが可能です。自分はあまり使わないけれど、特定のジャンルのメールに関して、内容を取得しパースして自動処理なんてこともやってる人は多いようです。

さて、このgetHeaderメソッドは、Mailの隠れた部分に存在するメールヘッダーを取得できるメソッドになり、そのメールに関する様々な情報を取得できます。主に、Message-IDContent-TypeReceivedなどがそれになります。ToやFromなどはこれまでもリリース済みのメソッドで取得できましたが、今回はこのメールヘッダが主役です。

サンプルスプレッドシート

function getMailHeader() {
  //変数の宣言
  var threads;
  
  //スプレッドシートを取得する
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("header")

  //1件目から10通のメールを取得する
  threads = GmailApp.getInboxThreads(0,10);
  
  //ループでヘッダーを取得する
  for(var i = 0;i<threads.length;i++){
    //メッセージオブジェクトを取得する(スレッドの1件目だけチョイス)
    var msg = threads[i].getMessages()[0];
    
    //ヘッダーを取得する(Message-IDを取得してみる)
    var header = msg.getHeader("Message-ID");
    
    //スプレッドシートに書き込む
    sheet.appendRow([header]);
    
  }
 
}

ちなみに、メールヘッダを確認する方法ですが、

  1. 該当のメールスレッドを開く
  2. 「︙」をクリックし、メッセージのソースを表示をクリック
  3. 元のメッセージとしてポップアップされ、下の方に全ヘッダー情報が表示される

今日のメールは、本当に色々なヘッダー情報が含まれているので、「Reply-To」なんて指定して取ると、返信先アドレスが取得できます。

関連リンク