google-apps-script - 如何获取下拉列表的预填充链接
问题描述
我能够在不检查元素的情况下获得谷歌表单的 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;
}
解决方案
推荐阅读
- powerbi - 日期范围过滤器之间 PowerBi
- c# - 我在 IIS 上使用 Entity Framework 托管了一个 ASP.NET Web 服务,如何使用 ip 访问它?
- google-analytics - Google Analytics 事件跟踪 - 不适用于下载链接
- java - 如何知道一个java进程正在运行什么程序
- nginx - nginx位置在/之后重写任何内容到root
- sql - SQL限制对另一个表的引用次数而不锁定
- html - 文本显示在弹出菜单顶部
- maven - 前端 maven 插件无法在 docker build 中安装 yarn
- algorithm - 逆向拓扑排序算法
- replace - 好的假设:如今的程序员在重构时会在全球范围内搜索和替换?