我想使用 Google Apps 脚本创建个性化表单,但在文档中找不到方法。例如,对于不同的用户,问题将是:
- 形容一棵“树”
- 形容一座“山”
- 形容一条“河”
... 等等
这可以通过 Google Apps 脚本实现吗?
我想使用 Google Apps 脚本创建个性化表单,但在文档中找不到方法。例如,对于不同的用户,问题将是:
... 等等
这可以通过 Google Apps 脚本实现吗?
现在是 2014 年,是的,您可以制作动态表格:
您可以在三个地方更改表单。
您可以预先创建几个标准表单,并为每个不同的用户或用户组提供不同的表单:首先制作第一个表单。然后制作一个脚本,将此表单邮寄给您想要的用户,然后遍历所有项目并替换文本。(请参阅本文底部的代码)
您可以创建一个标准表单,然后每次在提供表单之前替换某些文本。这可以通过onOpen()触发器来完成。
注意:这可能不像记录的那样工作。我无法使用此方法,并且 onOpen() 仅用于打开文档以进行编辑而不是用于填充。我不想深入探讨,但这似乎与文档相反,文档指出 OPEN-FOR-EDITING 限制仅适用于可安装触发器,而不适用于简单触发器。
不是一个很好的主意。
这是第一个解决方案(和第三个)的代码
function setQuiz(keyword, replacement){
var keyword = ...
var replacement = ...
var form = FormApp.getActiveForm();
var items = form.getItems();
var txt;
for (i=0; i<items.length; i++){
txt = items[i].getTitle();
txt = txt.replace(replacement, keyword);
items[i].setTitle(txt);
txt = "";
txt = items[i].getHelpText();
txt = txt.replace(replacement, keyword);
items[i].setHelpText(txt);
}
return form;
// CREATE A COPY of the form
// and send email with link to the form's COPY in next method, which will be done, only after this method replaced all texts. (see issue with solution 3)
// note you'll have to iterate between the replacement texts each time. So if you start out with tree to mountain, you must remember to change mountain to river...
简短的答案在评论中。稍微详细一点的答案是
user1@email.com tree user2@email.com mountain user3@email.com river