我能够在不检查元素的情况下获取谷歌表单的 id。但是,当表单包含下拉列表时,这不起作用,我无法访问下拉列表的 ID(预填充链接),但它适用于其他类型,例如简答题、多项选择等。 这是我到目前为止的代码
function getPreFillEntriesMap_(id){
var form = FormApp.openById(id);
var items = form.getItems();
// Logger.log(items)
var newFormResponse = form.createResponse();
var itms = [];
for(var i = 0; i < items.length; i++){
var response = getDefaultItemResponse_(items[i]);
if(response){
newFormResponse.withItemResponse(response);
itms.push({
id: items[i].getId(),
entry: null,
titile: items[i].getTitle(),
type: "" + items[i].getType()
});
}
}
Logger.log(itms)
var ens = newFormResponse.toPrefilledUrl().split("&entry.").map(function(s){
return s.split("=")[0];
});
ens.shift();
return itms.map(function(r, i){
r.entry = this[i];
return r;
}, ens);
}
function getDefaultItemResponse_(item){
switch(item.getType()){
case FormApp.ItemType.TEXT:
return item.asTextItem().createResponse("1");
break;
case FormApp.ItemType.MULTIPLE_CHOICE:
return item.asMultipleChoiceItem()
.createResponse(item.asMultipleChoiceItem().getChoices()[0].getValue());
break;
default:
return undefined;
}
}
function run(){
var obj= JSON.stringify(getPreFillEntriesMap_("1FtMYeluNpq2t82s0waZre648IDT_hRu63Be5ClZSCS0"),null," ");
// Logger.log(obj)
var entries_id= [];
var stringify = JSON.parse(obj);
for (var i = 0; i < stringify.length; i++) {
// Logger.log(stringify[i]['entry'])
entries_id.push(stringify[i]['entry'])
}
return entries_id;
}