我想使用脚本来更改现有Google表单的行为,以便在完成第1页后,未来的受访者将转到另一个页面(例如,第3页)。
我知道这涉及使用.setGoToPage()
,但我不知道如何设置参数来进行此修改。
考虑到表单中的页面已经创建,所以我只需要指出第1页应该转到第3页。为了澄清,我的问题是我需要找到"第1页和第34页;没有它的名字,所以,之后,我可以应用" .setGoToPage(pageThree);"命令到第3页(其名称也未知)。
这里的真正目标实际上是将页面1设置为回归自身,以便没有人能够看到第二页的选项,从根本上阻止了表单的使用。我只是这样说,以后能够撤消它。它必须是一个脚本,因为它将被添加到另一个执行其他操作的脚本中。我不能进入表格并手动完成。
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");
}
答案 0 :(得分:1)
好消息,坏消息。首先是好消息。
你走在正确的轨道上;您可以通过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);
}
答案 1 :(得分:1)
优秀的Mogsdad。我无法使用您提供的第二个选项,因为目标是确保用户无法看到表单的其余部分,因为表单本质上是一个考试,所以只是关闭响应是不够的。
但是,你间接地解决了这个问题,因为我所做的是在第一页和第二页之间添加了一个空的额外页面(使第二页真的是第三页)并使用了你的脚本但略微修改了它已经实现了我的目标。
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());
}
答案 2 :(得分:0)
获取第2页并将setGoToPage设置为FormApp.PageNavigationType.RESTART。
第2页的pageNavigationType是第1页完成后无需选择重定向您的选项的位置。要转到第1页,请使用FormApp.PageNavigationType.RESTART。要转到任何其他页面,请将该页面用作pageBreakItem。
我意识到这个话题已经有将近三年的历史了,但是,有了一个更好的答案,我想我会为偶然发现该话题的任何人提供答复。