【发布时间】:2021-11-02 21:23:28
【问题描述】:
使用here 提供的解决方案,我正在尝试预先填写并提交 Google 表单。它一直有效,直到遇到复选框问题 - 例如:
关于表单的问题:有人讨论过这个话题吗? 可能的答案:约翰、哈利、爱丽丝
我尝试预先填写的答案是“Alice” - 但我收到以下错误消息:
异常:参数(字符串)与 FormApp.CheckboxItem.createResponse 的方法签名不匹配。请参阅下面的代码。任何帮助表示赞赏...
function readSpreadsheet() {
// Adapted from https://stackoverflow.com/questions/65906603/is-it-possible-to-create-google-form-responses-with-data-from-google-sheets
var formid = 'formidgoeshere';
var ssid = 'ssidgoeshere';
var sheetname = 'answers'
var sheet = SpreadsheetApp.openById(ssid).getSheetByName(sheetname);
var range = sheet.getDataRange();
var numRows = range.getNumRows();
var values = range.getValues();
var form = FormApp.openById(formid)
var items = form.getItems();
for (var i = 1; i < numRows; i++) {
var value = values[i];
Logger.log(value)
var formResponse = form.createResponse();
var k = 0;
for (var j = 0; j < items.length; j++) {
var item;
switch (items[j].getType()) {
case FormApp.ItemType.CHECKBOX:
item = items[j].asCheckboxItem();
Logger.log("Item number " + j + " is titled: " + item.getTitle() );
formResponse.withItemResponse(item.createResponse(value[k++]));
break;
case FormApp.ItemType.LIST:
item = items[j].asListItem();
Logger.log("Item number " + j + " is titled: " + item.getTitle() );
formResponse.withItemResponse(item.createResponse(value[k++]));
break;
case FormApp.ItemType.MULTIPLE_CHOICE:
item = items[j].asMultipleChoiceItem();
Logger.log("Item number " + j + " is titled: " + item.getTitle() );
formResponse.withItemResponse(item.createResponse(value[k++]));
break;
case FormApp.ItemType.PARAGRAPH_TEXT:
item = items[j].asParagraphTextItem();
Logger.log("Item number " + j + " is titled: " + item.getTitle() );
formResponse.withItemResponse(item.createResponse(value[k++]));
break;
case FormApp.ItemType.TEXT:
item = items[j].asTextItem();
Logger.log("Item number " + j + " is titled: " + item.getTitle() );
formResponse.withItemResponse(item.createResponse(value[k++]));
break;
case FormApp.ItemType.CHECKBOX:
item = items[j].asCheckboxItem();
Logger.log("Item number " + j + " is titled: " + item.getTitle() );
formResponse.withItemResponse(item.createResponse(value[k++]));
break;
default:
Logger.log("#" + (i + 1) + ":Do nothing for item " + j + " of type " + items[j].getType());
continue;
}
if(j==0){
Logger.log("This item is the FORM NUMBER");
};
}
formResponse.submit();
}
}
【问题讨论】:
-
试试
item.createResponse([value[k++]])
标签: google-apps-script google-forms