Google apps script Google脚本中的时间触发器出现错误
我正试图设置一个时间触发器,让google脚本按计划运行,但出现以下错误。我正在尝试运行一个脚本,其中包含3个其他脚本 当我手动运行脚本时,它工作正常 请注意,工作表中的日期列使用公式填充,日期格式为“m/dd/yyyy” 错误: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
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" );