Gmailの受信時にスクリプトを実行する

高瀬 裕介 3,103views 更新:2014年6月25日
// GoogleAppScriptの実行トリガーを時間主導型の1分ごとに設定
function getMail(){
    //履歴保存用スプレッドシート指定
    var sheetObj = SpreadsheetApp.openById('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
    var sheet = sheetObj.getSheetByName('history');
    
    //未読メールを検索
    var thds = GmailApp.search("label:inbox is:unread");
    
    //一度に処理できるメール数
    var row_limit = 3;
  
    //受信履歴をスプレッドシートに格納
    var row = sheet.getLastRow() + 1;
    var row_first = row;
    var oldIds = new Array();
    for(var i = 1; i <= row; i++) {
       oldIds.push(sheet.getRange(i,1).getValue());
    }
  
    for(var n in thds){        
        var thd = thds[n];        
        var msgs = thd.getMessages();
        for(m in msgs){
            var msg = msgs[m];
            var date = msg.getDate();
            var body = msg.getBody();
            var id = msg.getId();
            
            //受信済みメールをスキップ
            if (oldIds.indexOf(id) > -1) {
                Logger.log(id + ' skipped.');
                continue;
            }
            
            //bodyにメールの内容がはいるのでここにメインの処理
            
            //受信ログを保存
            sheet.getRange(row,1).setValue(id);
            sheet.getRange(row,2).setValue("" + date);
            row++;
            
            //一度に処理できるメール数を超えたら処理終了
            if(row - row_first > row_limit) {
                break;
            }
        }
    }
}

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません