首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过脚本修改表单导航

问通过脚本修改表单导航
EN

Stack Overflow用户
提问于 2015-11-06 02:47:26
回答 3查看 1.8K关注 0票数 1

我想使用脚本来更改现有Google表单的行为,以便在完成第一页后,将来的受访者将转到另一页(例如,第三页)。

我知道这涉及到使用.setGoToPage(),但我不知道如何设置参数来进行此修改。

考虑到表单中的页面已经创建,所以我只需要指出页面1应该转到页面3。为了澄清,我的问题是我需要在不知道其名称的情况下找到“页面1”,以便之后可以将".setGoToPage(pageThree);“命令应用于页面3(其名称也是未知的)。

这里的真正目标实际上是将页面1设置为返回到它自己,这样就没有人能看到页面2的选项,实质上就是阻止表单被使用。我只是这样写的,这样以后就可以撤销它了。它必须是一个脚本,因为它将被添加到执行其他操作的另一个脚本中。我无法进入表单并手动执行此操作。

代码语言:javascript
复制
 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");
}    
EN

回答 3

Stack Overflow用户

发布于 2015-11-06 06:10:40

好消息,坏消息。首先是好消息。

这条路走对了;您可以通过Form.getItems(FormApp.ItemType.PAGE_BREAK)获得所有的分页符,这将产生一个有序的部分数组。“第一页”(第1节)以分页符#0结束,第二页以分页符#1结束,依此类推。

因此,将表单修改为在第1节之后转到第3节很容易:

代码语言:javascript
复制
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()。

现在坏消息..。节以分页符结束,因此没有可设置为第一节的目标。

但是,由于您希望有效地禁用表单,因此可以停止接受响应。

代码语言:javascript
复制
function myFunction() {
  var formId = '--form-id--';

  var form = FormApp.openById(formId);
  form.setAcceptingResponses(false);
}
票数 1
EN

Stack Overflow用户

发布于 2015-11-06 08:19:09

很棒的莫斯达。我不能使用您给出的第二个选项,因为目标是确保用户看不到表单的其余部分,因为表单本质上是一个考试,所以仅仅关闭响应是不够的。

但是,你间接地解决了这个问题,因为我所做的是在第一页和第二页之间放了一个空的额外页面(使第二页真正的第三页),并使用了你的脚本,但稍微修改了一下,它已经达到了我的目标。

代码语言:javascript
复制
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());
}
票数 1
EN

Stack Overflow用户

发布于 2018-07-27 03:37:52

抓取第2页并将setGoToPage转到FormApp.PageNavigationType.RESTART。

第2页的pageNavigationType是在未选择重定向选项的情况下完成第1页后的位置。若要转到第1页,请使用FormApp.PageNavigationType.RESTART。若要转到任何其他页,请将该页用作pageBreakItem。

我意识到这个话题已经有近三年的历史了,但是,由于有一个更好的答案,我想我会给任何偶然发现它的人回复。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33552421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档