Google表单:是否可以更新onLoad表单的标题?

时间:2015-07-05 19:56:26

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

我正在寻找一种方法来更新谷歌表单元素的标题,其中包含来自谷歌电子表格单元格的特定数据。由于电子表格中的数据正在发生变化,表单元素的标题也应该发生变化。

这是我使用的代码。

function readTheSheet() {
  var ss = SpreadsheetApp.openById("SpreadsheetKey");
  var active = SpreadsheetApp.setActiveSpreadsheet(ss);
  var sheet = SpreadsheetApp.setActiveSheet(ss.getSheets()[4]);
  var data = ss.getDataRange().getValues();  // Data for pre-fill

  var formUrl = ss.getFormUrl();
  var form = FormApp.openByUrl(formUrl);
  var items = form.getItems();
  var formItem = items[0].asTextItem();

  formItem.setTitle('Aktueller Clankrieg: ' + data[1][0]);

  Logger.log(data[1][0]);
};

此代码运行正常,表示当有人响应表单时它没有更新。根据Google Dev,onOpen()触发器仅在用户打开表单时运行,而不是在响应表单时运行。

有谁知道是否以及如何做到这一点?

如果是,任何帮助或指示都将非常受欢迎。

提前谢谢!重击

1 个答案:

答案 0 :(得分:0)

OnOpen()仅在有人打开表单进行编辑时触发。 :(

为了解决这个问题,每当使用onEdit()更改相关列/行时,我都会将表单设置为编辑表单(onChange()也会起作用)触发这些部分。

这是一个问题,但如果有人更新了部分数据,然后去了午餐/回家当天/等等,而其他人则在其间使用了表格。如果您有一个重要的列/行,或者如果它得到零碎的更新无关紧要,或者您的用户会遵循适用于您的说明。

我最终将其更改为手动触发的事件。用户一直忘记使用菜单项,所以我在工作表上粘贴了一个“大红色按钮”jpg,其中包含重要的数据并将脚本与之相关联。似乎已经完成了这个伎俩。每当他们更改处理表单的表单时,他们都会记得按下按钮并更新表单。

基本上从工作表中获取更新的数据,然后使用以下组合:

//code to get the value to update into the form
var Form = FormApp.openById('form id') //to open the form
//more code to get the list of form items and select the right one if you are updating more than one thing
item.getTitle() == 'Item name that you want to update' //That is literally what you typed in that section on the form

Hollar如果你需要更多关于逻辑/语法的细节。