2009-09-08 80 views
3

我想创建一个表单,使用电子表格中的数据,以便它是动态的。是否有可能做到这一点?我无法找到任何描述如何或任何示例的地方。是否可以从谷歌电子表格填充谷歌表单?

所有似乎可能的是从表单填充电子表格,我也将使用它,但它不是这里主要关心的问题。

+0

您可以将Google文档标记添加到此 – Parker 2009-12-08 17:02:00

+0

完成。经过更多的研究似乎这是不可能的,这是一个很大的耻辱。它可能正在其途中。 – George 2009-12-09 01:40:09

+0

我删除了google-docs标签,因为目前这是针对有关文字处理应用程序的问题。 – 2016-10-10 14:59:35

回答

0

目前有一项功能要求我们添加一个表单API,允许您为电子表格创建,检索,更新和删除表单。尽管此时此功能不存在,但如果此时功能不存在,则可以使用Forms API和Spreadsheets Data API链接电子表格数据以形成数据。 feature request is here

+0

感谢您通知我这个vicfryzel。有没有这种功能的任何时间表?我不再追求需要这个功能的项目,但是我对它的开发非常感兴趣。我已经给出了要求。 – George 2010-04-07 12:13:06

+0

现在可以通过编程方式创建表单。 – 2016-10-10 14:57:24

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') 

} 
1

你可能想看看FormRanger plugin。它不会填充表单的问题,但会动态地填充多选题,列表或网格问题中的可能答案。它甚至可以将数据从以前的表单响应中提取出来。它可以设置为在每次提交或每小时后自动更新。 请注意:如果您根据问题的答案使用过滤器问题重定向到不同的部分,则不能使用Formranger解决这些问题,因为它会破坏重定向。