Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script Google脚本中的时间触发器出现错误_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script Google脚本中的时间触发器出现错误

Google apps script Google脚本中的时间触发器出现错误,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正试图设置一个时间触发器,让google脚本按计划运行,但出现以下错误。我正在尝试运行一个脚本,其中包含3个其他脚本 当我手动运行脚本时,它工作正常 请注意,工作表中的日期列使用公式填充,日期格式为“m/dd/yyyy” 错误: Exception: The parameters (String,String,String) don't match the method signature for Utilities.formatDate. at sendEmail(IntCode:5

我正试图设置一个时间触发器,让google脚本按计划运行,但出现以下错误。我正在尝试运行一个脚本,其中包含3个其他脚本

当我手动运行脚本时,它工作正常

请注意,工作表中的日期列使用公式填充,日期格式为“m/dd/yyyy”

错误:

Exception: The parameters (String,String,String) don't match the method signature for Utilities.formatDate.
    at sendEmail(IntCode:54:32)
    at combine(Combine:6:3)
代码行(其中有3行,行号几乎没有变化,我将其与“combine”脚本结合使用)-IntCode.gs

function getDataSheet() {

  sheet = SpreadsheetApp.getActiveSheet();

  startRow = 2;  // First row of data to process
  numRows = 200;   // Number of rows to process
  startCol = 1;  //First column of data to process
  numCols = 21;    // Number of columns to process 
  
  var dataRange = sheet.getRange(startRow, startCol, numRows, numCols);

  // Fetch values for each row in the Range.
  var data = dataRange.getValues();  

  return data;  
}

function sendFirstEmail() {
  var complete = "";
  var first = "Yes";
        
  var data = getDataSheet();
  
  for (var i = 0; i < data.length; i++) {
    
    var row = data[i];
    
    var isFirst = row[18];
    var isComplete = row[11];
    var user = row[0];
    var detail = row[1];
    var description = row[2];
    var period = row[3];
    var name_1 = row[4];
    var to_email_1 = row[5];
    var to_email_2 = row[6];
    var cc_email_1 = row[7];
    var cc_email_2 = row[8];
    var cc_email_3 = row[9];
    var email_1 = "email ID";
    var date = row[10];
                
    if(isFirst == first && isComplete == complete ) {
  

      var to_email_1 = row[5];
      var to_email_2 = row[6];
      var cc_email_1 = row[7];
      var cc_email_2 = row[8];
      var cc_email_3 = row[9];
      var email_1 = "email id";
      var period = row[3];
      var message = HtmlService.createHtmlOutputFromFile('FirstMail').getContent();
      var date = Utilities.formatDate(row[10], "GMT" , "dd/MMM/yyyy" );
      var file = row[12];
      
      message = message.replace("%user", user);
      message = message.replace("%detail", detail);
      message = message.replace("%description", description);
      message = message.replace("%period", period);
      message = message.replace("%name_1", name_1);
      message = message.replace("%date", date);
      message = message.replace("%file", file);
      
    MailApp.sendEmail({
      name: 'display name',
      to: to_email_1 + ", " + to_email_2,
      replyTo: email_1,
      cc: email_1 + ", " + cc_email_1 + ", " + cc_email_2 + ", " + cc_email_3,
      subject: "[TEST] " + detail + " on " + date,
      htmlBody: message
    });
      
      
    }
  }
}

提前感谢。

根据您收到的错误消息,似乎
行[10]
是一个字符串,而它应该是一个日期对象

尝试将该行替换为以下内容:

var date = Utilities.formatDate( new Date(row[10]), "GMT" , "dd/MMM/yyyy" );

阅读有关日期对象的更多信息。

您应该与我们分享不起作用的代码行。“更好的是,这是一个最小的可重复的例子。”MariosKaramanis现在补充道。谢谢所有这些脚本都是手动运行的,没有任何问题,我收到了电子邮件,没有任何问题。只有时间触发器会出现上述错误。请尝试我的答案,看看它是否有效。别忘了研究并提供您的新问题。谢谢您的代码。我现在得到这个错误<代码>例外:无效电子邮件:sendFirstEmail(IntCode:65:13)的内部邮件现在看来您提供的电子邮件不正确。尝试记录所有电子邮件变量的Logger.log(),以确保它们包含预期值。例如,尝试Logger.log(发送电子邮件至1)等。如果我解决了您的问题,请接受答案:)谢谢。但我发布的初始代码也可以在没有问题的情况下手动运行,唯一的一点是,如果时间触发,它会显示错误。我仍然有相同的问题,但使用代码行时错误代码不同。我发布的问题是时间触发器不起作用。@Spear针对新错误提出新问题。在新的岗位上,后续问题更可取。回答者的意图是解决张贴的问题,而不是在项目结束或实现目标之前指导/指导您。
var date = Utilities.formatDate( new Date(row[10]), "GMT" , "dd/MMM/yyyy" );