メールを監視する際に、特定の文字を含むメールだけまとめてチェックしたかったため、
対象のメールにスターを付けるスクリプトを作成した。
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時間ずれているため注意が必要。