我想使用脚本来更改现有Google表单的行为,以便在完成第一页后,将来的受访者将转到另一页(例如,第三页)。
我知道这涉及到使用.setGoToPage(),但我不知道如何设置参数来进行此修改。
考虑到表单中的页面已经创建,所以我只需要指出页面1应该转到页面3。为了澄清,我的问题是我需要在不知道其名称的情况下找到“页面1”,以便之后可以将".setGoToPage(pageThree);“命令应用于页面3(其名称也是未知的)。
这里的真正目标实际上是将页面1设置为返回到它自己,这样就没有人能看到页面2的选项,实质上就是阻止表单被使用。我只是这样写的,这样以后就可以撤销它了。它必须是一个脚本,因为它将被添加到执行其他操作的另一个脚本中。我无法进入表单并手动执行此操作。
function myFunction() {
var form = FormApp.openById("ID GOES HERE");
var item = form.getItems(itemType);
// here is where I need the rest of the script
.setGoToPage("PAGE THREE GOES HERE");
} 发布于 2015-11-06 06:10:40
好消息,坏消息。首先是好消息。
这条路走对了;您可以通过Form.getItems(FormApp.ItemType.PAGE_BREAK)获得所有的分页符,这将产生一个有序的部分数组。“第一页”(第1节)以分页符#0结束,第二页以分页符#1结束,依此类推。
因此,将表单修改为在第1节之后转到第3节很容易:
function myFunction() {
var formId = '--form-id--';
var form = FormApp.openById(formId);
var pageBreaks = form.getItems(FormApp.ItemType.PAGE_BREAK);
pageBreaks[0].asPageBreakItem().setGoToPage(pageBreaks[1].asPageBreakItem());
}不要忘记.asPageBreakItem()调用,因为.getItems()的结果是通用的Item,但是您需要一个特定的PageBreakItem才能使用.setGoToPage()。
现在坏消息..。节以分页符结束,因此没有可设置为第一节的目标。
但是,由于您希望有效地禁用表单,因此可以停止接受响应。
function myFunction() {
var formId = '--form-id--';
var form = FormApp.openById(formId);
form.setAcceptingResponses(false);
}发布于 2015-11-06 08:19:09
很棒的莫斯达。我不能使用您给出的第二个选项,因为目标是确保用户看不到表单的其余部分,因为表单本质上是一个考试,所以仅仅关闭响应是不够的。
但是,你间接地解决了这个问题,因为我所做的是在第一页和第二页之间放了一个空的额外页面(使第二页真正的第三页),并使用了你的脚本,但稍微修改了一下,它已经达到了我的目标。
function myFunction() {
var form = FormApp.openById('FORM ID HERE');
var pageBreaks = form.getItems(FormApp.ItemType.PAGE_BREAK);
pageBreaks[0].asPageBreakItem().setGoToPage(pageBreaks[0].asPageBreakItem());
pageBreaks[1].asPageBreakItem().setGoToPage(pageBreaks[0].asPageBreakItem());
}发布于 2018-07-27 03:37:52
抓取第2页并将setGoToPage转到FormApp.PageNavigationType.RESTART。
第2页的pageNavigationType是在未选择重定向选项的情况下完成第1页后的位置。若要转到第1页,请使用FormApp.PageNavigationType.RESTART。若要转到任何其他页,请将该页用作pageBreakItem。
我意识到这个话题已经有近三年的历史了,但是,由于有一个更好的答案,我想我会给任何偶然发现它的人回复。
https://stackoverflow.com/questions/33552421
复制相似问题