Gmailの受信数出すスクリプト

ひとまずやりたかったことでけた。
ラベルを取得してそのラベルごとに受信件数を出すScriptです。
ラベル数多かったらGASの制限にひっかかるかも
自分がしたかったことはできたけどね。
送受信を集計するツールはあるんですけどね。こいつが入れられないんで
仕方なしに作りました。

http://news.mynavi.jp/news/2012/04/24/012/

// Refer to
// http://rcmdnk.github.io/blog/2014/04/09/computer-gmail/
// http://qiita.com/ttyokoyama/items/1aa6977043fb0245342a
// https://productforums.google.com/forum/#!topic/gmail-ja/MpPN-IhtrEw
// http://qiita.com/atusi/items/2c2ac48083eeac6e153e
// http://knt45.hatenablog.com/entry/20120810/1344608033

//
// MailCountBatch
//
function DailyRun(){
 //Outputlog('getLabelStart')

  //EndDay
  var first = new Date();
 var NextDate = Utilities.formatDate(first, 'JST', 'yyyy/MM/dd');  //InsertSheetName

  //StartDay
  var last = new Date(first);
  var next = last.setDate(last.getDate() -1);
  var SheetName = Utilities.formatDate(new Date(next), 'JST', 'yyyy/MM/dd'); //NextDay
 
  // End of the month
  var end = new Date(first.getFullYear(), first.getMonth() + 1, 0);
 var endDate = Utilities.formatDate(end, 'JST', 'yyyy/MM/dd');

  //ID rewriting is necessary MonthlyTasks
  var SPREADSHEET_ID = '';
  var objSpreadsheet = SpreadsheetApp.openById(SPREADSHEET_ID);
 
  //MailLabelCount
  LabelMailCount(objSpreadsheet,SheetName,SheetName,NextDate);

  if(SheetName==endDate){
    //MonthlyCount
   var one = new Date(first.getFullYear(), first.getMonth() , 1);
  var firstDate = Utilities.formatDate(one, 'JST', 'yyyy/MM/dd');
    //Logger.log(firstDate);
   var MonthSheet = Utilities.formatDate(one, 'JST', 'yyyy/MM')
    LabelMailCount(objSpreadsheet,MonthSheet,firstDate,endDate);

    var mail_to = "Mailaddr";
    var tBody = " 月次作業が必要です。スクリプト内のIDの値を修正してください。\n\n修正箇所はXX行目:var SPREADSHEET_ID = の「=」の後ろです。";
    var subject ="【月次作業 スプレッドシート作成:" + endDate + "】";
    GmailApp.sendEmail(mail_to, subject, tBody);
  }
}

//
//MailLabelInsert Cell
//
function LabelMailCount(SpreadSheet,sheetName,startDay,endDay){
// Outputlog('getLabelStart')
 
  //SheetInsert
  var objSpredSheet = SpreadSheet;
  var AddedSheet = objSpredSheet.insertSheet(sheetName);
  var tSheet = SpreadsheetApp.setActiveSheet(AddedSheet)   //InsertSheetActive→TargetSheet

  //Make Header
  var row = 1;
  var Title1 = 'ラベル名';
  var Title2 = '件数';
 tSheet.getRange(row,1).setValue(Title1);
 tSheet.getRange(row,2).setValue(Title2);
  row++;
 
 // logs all of the your labels
  var START = 0;
  var MAX = 500;
  var sumCount = 0;
  var labels = GmailApp.getUserLabels();
  var lCounter = labels.length+1;
  for (var i = 0; i < lCounter; i++) {
    if(i == labels.length){
      var searchword = '';
    }else{
      var searchword = labels[i].getName();
    }
    var search = 'after:' + startDay + 'before:' + endDay + ' + label:' + searchword;
    //Logger.log(search);
    var thds = GmailApp.search(search,START,MAX);  //MailSearch
    var count = thds.length;
    //Write SpredSheet
    tSheet.getRange(row,1).setValue(searchword);
    tSheet.getRange(row,2).setValue(count);
    //Logger.log(searchword+":" + count);
   row++;
   sumCount = sumCount+count;
 }
 //Make Footer
 var fotter = '合計';
 tSheet.getRange(row,1).setValue(fotter);
 tSheet.getRange(row,2).setValue(sumCount);

 var ActSheet = objSpredSheet.getSheetByName('Sheet1');
 SpreadsheetApp.setActiveSheet(ActSheet);

// Outputlog('GetLabelEnd')
}

function Outputlog(Message){
// for Log
 var LogTime = Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd hh:mm:ss');
  var logmessage = Message + ':' + LogTime;  
  Logger.log(logmessage);
};

コメント

このブログの人気の投稿

証券外務員1種勉強(計算式暗記用メモ)

GASでGoogleDriveのサブフォルダとファイル一覧を出力する

マクロ経済学(IS-LM分析)