【问题标题】:Google Script send email from a sheet in a specific dateGoogle Script 在特定日期从工作表发送电子邮件
【发布时间】:2014-09-30 08:42:10
【问题描述】:

follow 脚本用于从 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();

您有什么建议来修复这个错误吗?

谢谢

马里奥

【问题讨论】:

    标签: google-sheets


    【解决方案1】:

    尝试使用以下命令更改行:

    var 值 = 公式[r][c]

    它还应该减少对 google 电子表格的请求并运行得更快。

    【讨论】:

    • 我解决了这个问题: var value = range.getCell(r+1, c+1).getValue();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多