Google Apps Scriptが便利すぎた。Gmailから情報を取得してスプレッドシートに貼る方法

どうも、めどんです。

最近、メルマガの展開を勉強するべく、

尊敬するとある経営者のメルマガを分析

しようと決めました。

メールを一通一通、

読み返し、スプレッドシート(エクセルみたいなやつ)

にまとめることを思いつきました。

しかーし、

膨大な量のメールを一通一通、

スプレッドシートにコピペするのは

時間がかかります。

絶対、モチベーション続きません。。

そこで、どうにか

メールをスプレッドシートに

一括で貼り付けられないか?

といろいろ調べた結果、

いい方法にたどり着いたので、

シェアしますね。

Google Apps scriptで一括取り込み。

①スプレッドシートを開く

②ツールから「スクリプトエディタ」を開く

③スクリプトをコピペ

④スクリプトを実行

スクリプトは下記からコピーしてね。(埋め込み方がわからん笑)

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

function searchContactMail() {

  /* Gmailから特定条件のスレッドを検索しメールを取り出す */

  var strTerms = ‘label:ラベル名’; //メール検索条件

  var numMailMax = 218; //取得するメール総数  

  var numMail = 218; //1度に取得するメール数

  var myThreads; //条件にマッチしたスレッドを取得、最大500通と決まっている

  var myMsgs; //スレッドからメールを取得する →二次元配列で格納

  var valMsgs;

  var i = SpreadsheetApp.getActiveSheet().getLastRow();

  if(i<numMailMax) {  

    valMsgs = [];

    myThreads = GmailApp.search(strTerms, i, numMail); //条件にマッチしたスレッドを取得、最大500通と決まっている

    myMsgs = GmailApp.getMessagesForThreads(myThreads); //スレッドからメールを取得する →二次元配列で格納

    /* 各メールから日時、送信元、件名、内容を取り出す*/

    for(var j = 0;j < myMsgs.length;j++){

      valMsgs[j] = [];

      valMsgs[j][0] = myMsgs[j][0].getFrom();

      valMsgs[j][1] = myMsgs[j][0].getReplyTo();

      valMsgs[j][2] = myMsgs[j][0].getTo();

      valMsgs[j][3] = myMsgs[j][0].getDate();

      valMsgs[j][4] = myMsgs[j][0].getSubject(); 

    }

    /* スプレッドシートに出力 */

    if(myMsgs.length>0){

      SpreadsheetApp.getActiveSheet().getRange(i + 1, 1, j, 5).setValues(valMsgs); //シートに貼り付け

    } 

  }

}

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

変更した部分は、ラベル名、

取得するメール総数、一度に取得するメール数。

メール本文は必要なかったので削除しました。

これで、メール一覧をスプレッドシートに

一括で貼り付けることに成功!

あとは、メールを分析して、

気づいたことなどを追記していく形です。

今回、この方法を調べるのに結構時間かかって

しまいましたが、一度、覚えてしまえば後々、

すごい楽できます。

こういう事には時間をかけてもいいんじゃないかな?

ってのが、僕の考え。

是非試してみてはいかがでしょうか?

参考にした記事はこちら