我是 Google 脚本新手。所以,我正在努力学习。我使用了 YouTube 视频中的以下脚本,该视频展示了如何编写脚本来在提交 Google 表单时创建 URL。这应该允许用户返回并重新编辑表单。 youtube 信息中有一个示例脚本可供使用。但是,当我运行此脚本时,我收到以下错误消息。
错误类型错误:data[j][0].setMilliseconds 不是函数 分配编辑Urls @ Code.gs:17
我在另一个帖子回复中看到“j”不是一个好的变量。我尝试改变这一点,但没有运气。任何帮助,将不胜感激。以下是编写的脚本。
function assignEditUrls() {
var form = FormApp.openById('1Jh35nIdGtT0gCTWNSW4vAnC9L-cZY-pdOnHy2MFuL2g');
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Event_Information');
var data = sheet.getDataRange().getValues();
var urlCol = 52;
var responses = form.getResponses();
var timestamps = [], urls = [], resultUrls = [];
for (var i = 0; i < responses.length; i++) {
timestamps.push(responses[i].getTimestamp().setMilliseconds(0));
urls.push(responses[i].getEditResponseUrl());
}
for (var j = 1; j < data.length; j++) {
resultUrls.push([data[j][0]?urls[timestamps.indexOf(data[j][0].setMilliseconds(0))]:'']);
}
sheet.getRange(2, urlCol, resultUrls.length).setValues(resultUrls);
}
setMilliseconds()
是Date
的一种方法。您的代码正在返回引用的方法,因为 data[j][0]
返回的值不是 Date
对象。
为了帮助您调试代码,您可以在第 17 行之前添加
console.log(JSON.stringify(data[j][0]))
。
我遇到了同样的问题,并意识到时间戳字段需要成为该代码的第一列才能按编写的方式工作。我移动了该列,它运行成功了。