谷歌表单:有可能在加载时更新表单的标题吗



我正在寻找一种方法,用谷歌电子表格单元格中的特定数据更新谷歌表单元素的标题。随着电子表格中的数据发生变化,表单元素的页眉也应该发生变化。

这是我正在使用的代码。

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((触发器只在用户打开表单时运行,而不是在响应表单时运行。

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

如果是,我们将非常感谢您的帮助或指导。

提前谢谢!Smite

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

为了解决这个问题,我设置了工作表,以便在使用onEdit((触发器更改相关列/行时编辑表单。

不过,如果有人更新了部分数据,然后去吃午饭/回家等,而其他人在两者之间使用了表格,那就成了一个问题。如果你有一个重要的列/行,或者它是否得到了零碎的更新,或者你的用户是否会遵循对你有用的说明,这都无关紧要。

我最终将其更改为手动触发的事件。不过,用户总是忘记使用菜单项,所以我在表格上贴了一个"红色大按钮"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。

最新更新