Google Apps ScriptでGmailにスターをつける

メールを監視する際に、特定の文字を含むメールだけまとめてチェックしたかったため、
対象のメールにスターを付けるスクリプトを作成した。



1. スプレッドシートを作成する



2. 上のメニューバーにある「ツール」からスクリプトエディタを選択する。



3. 下記のファイルを作成する。



function searchContactMail() {

var strTerms = 'label:test'; //メール検索条件
var numMail = 500; //1度に取得するメール数
var myThreads; //条件にマッチしたスレッドを取得、最大500
var myMsgs; //スレッドからメールを取得する
var valMsgs;
var bodyText;
var num = 1;

valMsgs = [];
myThreads = GmailApp.search(strTerms, 0, numMail); //条件にマッチしたスレッドを取得
myMsgs = GmailApp.getMessagesForThreads(myThreads); //スレッドからメールを取得する

//各メールから日時、送信元、件名、内容を取り出す
for(var j = 0; j < myMsgs.length; j++){

valMsgs[j] = [];
threadLength = myMsgs[j].length;

valMsgs[j][0] = myMsgs[j][threadLength - 1].getDate();
valMsgs[j][1] = myMsgs[j][threadLength - 1].getSubject();
valMsgs[j][2] = myMsgs[j][threadLength - 1].getPlainBody();
var a = myMsgs[j][0].getPlainBody();

if(valMsgs[j][2].length > 50000){
bodyText = valMsgs[j][2].slice(0, 50000);
}else{
bodyText = valMsgs[j][2];
}

if((valMsgs[j][1].indexOf('{文字列}') != -1)){
//スターを付与
myMsgs[j][0].star();
//スプレットシートに貼り付け
SpreadsheetApp.getActiveSheet().getRange(num, 1).setValue(valMsgs[j][0]);
SpreadsheetApp.getActiveSheet().getRange(num, 2).setValue(valMsgs[j][1]);
SpreadsheetApp.getActiveSheet().getRange(num, 3).setValue(bodyText);
num = num + 1;
}
}
}



4. 関数を実行する



補足



取得できる最大のメール件数は500までなので、
検索条件とするラベルをできるだけ細かく設定する必要がある。
また、時刻も検索条件に入れられるが、イギリスの時刻になっており9時間ずれているため注意が必要。