我想创建一个使用电子表格数据的表单,以便它是动态的。是否有可能做到这一点?我无法找到描述方式或任何示例的任何地方。
所有看起来可能的是从表单填充电子表格,我也会使用它,但这不是主要关注点。
答案 0 :(得分:4)
Google Apps Scripts ..最后以编程方式生成Google表单的详细记录方式。 https://developers.google.com/apps-script/reference/forms/
答案 1 :(得分:3)
是的。使用表单脚本并使用FORM OPEN上的触发器更新电子表格中的信息。下面是一个示例,它从两个不同的工作表中获取数据,并将数据插入到组合框和多选控件中。
function getNewNames(){
var form = FormApp.getActiveForm();
var items = form.getItems();
var ss = SpreadsheetApp.openByUrl(
'https://docs.google.com/spreadsheets/d/YOURDOCSNAMEHERE/edit');
var assSheet1 = ss.getSheetByName('Sheet1');
var assValues = assSheet1.getDataRange().getValues();
var values = assValues.slice(1);
var valSort = values.sort();
var ss2 = SpreadsheetApp.openByUrl(
'https://docs.google.com/spreadsheets/d/DOCSNAMEHERE/edit');
var playerSheet1 = ss2.getSheets()[0];
var playerValues = playerSheet1.getDataRange().getValues();
var player = playerValues.slice(0);
var plySort = player.sort();
var names = [];
for(var p = 0; p < plySort.length; p++){
names.push(plySort[p][0])
}
var pList = items[0].asListItem();
pList.setChoiceValues(names).setRequired(true).setHelpText('Please Select Player Name')
var areas = [];
for (var i = 0; i < valSort.length; i++) {
areas.push(valSort[i][1])
}
var aList = items[1].asMultipleChoiceItem();
aList.setChoiceValues(areas).setRequired(true).setHelpText('Select Area of Assessment')
}
答案 2 :(得分:1)
您可能需要查看FormRanger plugin。它不会填充表单的问题,而是在多选题,列表或网格问题中动态填充可能的答案。它甚至可以从表单的先前响应中提取数据。它可以设置为在每次提交后或每小时后自动更新。 请注意:如果您根据问题的答案使用过滤器问题重定向到不同的部分,则不能使用Formranger来解决这些问题,因为它会破坏重定向。
答案 3 :(得分:0)
目前有一项功能请求,要求我们添加一个Forms API,允许您创建,检索,更新和删除电子表格的表单。尽管此功能目前尚不存在,但是如果有的话,您可以使用Forms API和Spreadsheets Data API将电子表格数据链接到表单数据。 feature request is here。