谷歌脚本中的时间触发器会出现错误



我正试图为谷歌脚本设置一个按计划运行的时间触发器,但我收到了以下错误。我正在尝试运行一个单独的脚本,其中包含另外三个脚本。

当我手动运行脚本时,它运行得很好。

需要注意的是,表单中的日期列是使用公式填充的,并且日期格式是";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个,行号几乎没有变化,我将其与"组合"脚本结合在一起(-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
});


}
}
}

我试图用时间触发器设置的合并脚本(combine.gs(。

function combine() {
var ss = SpreadsheetApp.openById("google sheet ID");
// https://docs.google.com/spreadsheets/d/id_is_here/
var sh = ss.getSheetByName("Sheet1"); // name of the actual sheet ("Sheet 1" for example)  
Logger.log('combine ran!');
sendFirstEmail();
sendSecondEmail();
sendFinalEmail();
}

提前谢谢。

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

尝试用以下内容替换该行:

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

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

最新更新