Google Script会在特定日期从表单发送电子邮件

时间:2014-09-30 08:42:10

标签: google-sheets

关注脚本用于从Google工作表中获取日期,如果此日期等于今天或明天生成自动发送到我的地址的电子邮件,以便提醒我。

function getVal() {


var ss = SpreadsheetApp.getActiveSpreadsheet(),
       sheet = ss.getActiveSheet();
   sheet.setActiveRange(sheet.getRange("A1")); 
   var range = sheet.getDataRange(),
       formulas = range.getValues();
   var toDay = new Date();
   for (var r=0; r<formulas.length; r++) {
       for (var c=0; c<formulas[r].length; c++) {    
          //var value = sheet.getRange(r,c).getValue();
          var value = range.getCell(r, c).getValue();
          Logger.log(value);  
          if (value == "AAAA")
          {
              var index = r+2;
              value = sheet.getRange(index,c).getValue();
              while (value != "" || index >= formulas.length)
              {
                  if (DateDiff.inDays(value,toDay)==1 || DateDiff.inDays(value,toDay)==0)
                  {
                      MailApp.sendEmail(myAdress,subject, text);
                  }
                  index = index + 3;
                  value = sheet.getRange(index,c).getValue();

              } 
          }
       }
   }
}

var DateDiff = {    
    inDays: function(d1, d2) {
        var t2 = d2.getTime();
        var t1 = d1.getTime();

        return parseInt((t2-t1)/(24*3600*1000));
    },
    inWeeks: function(d1, d2) {
        var t2 = d2.getTime();
        var t1 = d1.getTime();

        return parseInt((t2-t1)/(24*3600*1000*7));
    },
    inMonths: function(d1, d2) {
        var d1Y = d1.getFullYear();
        var d2Y = d2.getFullYear();
        var d1M = d1.getMonth();
        var d2M = d2.getMonth();

        return (d2M+12*d2Y)-(d1M+12*d1Y);
    },
    inYears: function(d1, d2) {
        return d2.getFullYear()-d1.getFullYear();
    }
}

当我运行脚本时,它在行中失败: var value = range.getCell(r,c).getValue();

为了解决这个问题,你有任何建议吗?

感谢

马里奥

1 个答案:

答案 0 :(得分:1)

尝试使用以下内容更改该行:

  

var value = formula [r] [c]

它也应该对谷歌电子表格做更少的请求并且运行得更快。