google-apps-script - 例外:参数(数字)与 FormApp.TimeItem.createResponse 的方法签名不匹配。(第 91 行,文件“代码”)
问题描述
我正在尝试借助 google sheet 中的一些数据自动填充 google 表单。为包含 timeitme 的表单创建响应,但是当我运行它给出异常错误的代码时它不起作用:异常:参数(编号) 与 FormApp.TimeItem.createResponse 的方法签名不匹配。(第 91 行,文件“代码”)
function autoEntry(){
var workBook = SpreadsheetApp.getActiveSpreadsheet();
var workSheet= workBook.getSheetByName("Sheet1");
var data = workSheet.getDataRange().getValues();
//Logger.log(data)
var headers = data[0];
var form = FormApp.openById("1ZBx7lxqwE2LDmPYL93U5cnRb_wBMjEz1J9he2JDUiQY");
var items = form.getItems();
for (var row = 1; row < data.length; row++ ) {
Logger.log("Generating response from spreadsheet for row="+row);
var response = form.createResponse();
for (var i=0; i<items.length; i++) {
var ques = items[i].getTitle(); // Get text of question for item
var quesCol = headers.indexOf(ques);
var resp = ques ? data[row][quesCol] : "";
// Logger.log(resp)
var type = items[i].getType().toString();
Logger.log("Question='"+ques+"', resp='"+resp+"' type:"+type);
switch (items[i].getType()) {
case FormApp.ItemType.TEXT:
var item = items[i].asTextItem();
break;
case FormApp.ItemType.PARAGRAPH_TEXT:
item = items[i].asParagraphTextItem();
break;
case FormApp.ItemType.LIST:
item = items[i].asListItem();
break;
case FormApp.ItemType.MULTIPLE_CHOICE:
item = items[i].asMultipleChoiceItem();
break;
case FormApp.ItemType.CHECKBOX:
item = items[i].asCheckboxItem();
// In a form submission event, resp is an array, containing CSV strings. Join
// into 1 string.
// In spreadsheet, just CSV string. Convert to array of separate choices, ready
// for createResponse().
if (typeof resp !== 'string')
resp = resp.join(','); // Convert array to CSV
resp = resp.split(/ *, */); // Convert CSV to array
break;
case FormApp.ItemType.DATE:
item = items[i].asDateItem();
resp = new Date( resp );
break;
// case FormApp.ItemType.DATETIME:
// item = items[i].asDateTimeItem();
// resp = new Date( resp );
break;
case FormApp.ItemType.TIME:
item = items[i].asTimeItem();
break;
default:
item = null;
break;
}
// Add this answer to our pre-filled URL
if (item) {
var respItem = item.createResponse(resp);
response.withItemResponse(respItem);
}else if (item.getType().toString() == "TIME"){
var respItem = item.createResponse(1,1);
response.withItemResponse(respItem);
}
// else if we have any other type of response, we'll skip it
else Logger.log("Skipping i="+i+", question="+ques+" type:"+type);
}
response.submit();
}
解决方案
方法的参数Form.TimeItem.createResponse
是hour
and minute
,但是你的代码通过了Date object
。
请参阅下面的文档。 https://developers.google.com/apps-script/reference/forms/time-item#createresponsehour,-minute
var respItem = item.createResponse(resp.getHours(), resp.getMinutes());
推荐阅读
- python - 如何在 tfds.load() 之后在 TensorFlow 2.0 中应用数据增强
- logging - Logstash Grok 过滤器访问日志
- mysql - 通过 MS Access 使用相同的值更新 SQL 数据库会导致锁冲突
- python - 如何在 Pygame 中用浮点半径画一个圆?
- c# - WPF textBox 中途改变颜色
- omnet++ - 使用 cSimpleModule 的 OMNeT++/Veins 问题
- c# - 服务器 Cookie 在身份 .net 核心中不起作用
- html - 具有自定义宽度的 PrimeNG TurboTable 无法正常工作
- javascript - 无法从选择框中选择项目/在输入字段中写入。我是否错误地处理了“密钥”?
- reactjs - 从 App.js 控制组件状态并更改它们的值