在Google工作表中显示动态表单选项

时间:2018-02-22 21:15:16

标签: javascript google-apps-script google-sheets google-form

我有一张名为“数据”的Google表格,用户可以在其中输入自己的产品名称和与之关联的销售号码(意为模板,因此产品名称可能会将用户更改为用户)。我已将数据和产品名称(PRODUCT_NAMES)读入一些全局数据对象,因此我可以访问它。我已经创建了一个名为“Plot Data”的菜单项,它将转到函数(现在)testFunction()

我想向用户显示一个表单,该表单显示所有产品名称的复选框网格项(以及可能更多的未来选项),根据他们检查的内容创建图表或计算某些值。

我的问题是两部分: 1)如何创建一个具有动态网格选择的表单,比如说有一个用户

PRODUCT_NAMES = {"Shirt", "Pants", "Shoes"}

而另一个有

PRODUCT_NAMES = {"Cars", "Trucks", "Suvs", "Trailers", "Boats"}

2)如何在Google表格中显示表单?我现在有:

function testFunction() {
  // Create a new form since the options change
  var form = FormApp.create('Test Form');
  var item = form.addCheckboxItem();
  item.setTitle("This is a Test");
  // TODO: Add dynamic options here
  var formUrl = form.getPublishedUrl();

  var response = UrlFetchApp.fetch(formUrl);
  var formHtml = response.GetContextText();

  var htmlApp = HtmlService
      .createHtmlOutput(formHtml)
      .setSandboxMode(HtmlService.SandboxMode.IFRAME)
      .setTitle('Sales Data')
      .setWidth(500) 
      .setHeight(450);
  SpreadsheetApp.getUi().showSidebar(htmlApp);
}

但这似乎不起作用,我可能会误解某些东西 问题2b)如何访问用户响应。

我正在学习javascript和GAS,所以这对我来说都是新手。我想尝试将用户选项部分保留为Google表单,只是从API的角度来看,这样做会更容易。

1 个答案:

答案 0 :(得分:0)

从我的评论中,对未来的用户进行了一些扩展:

最好使用基本HTML表单显示UI Modal Dialog。这使代码保持在脚本本身内。

您要执行的操作的问题是,一旦表单生成并且电子表格已关联,数据仍会转到新表每个表单,而不是您想要的位置, 然后你必须设置onEdit()触发器来获取新工作表中的值,生成图表,然后删除工作表,以及某种方式,表单。它可能,但可能比简单的模态对话更多的工作。

考虑HTML选项,因为网上有许多简单易懂的教程,示例和资源。如果你最终尝试了,我建议Bootstrap开始!

祝你好运!