动态制作表格以包含页面导航

时间:2014-03-18 05:10:07

标签: google-apps-script google-form

这是一个动态表单生成器的脚本,它来自电子表格。

function createForm2() {


var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("makechoice");

var dataRange = ss.getRange(2,1,40,20);
var data = dataRange.getValues();


var form = FormApp.create("Make a Test");

for (i in data) {
  var row = data[i];
  var title = row[0];
  var word = row[1];
  var qst = row[2];
  var ans1 = row[3];
  var ans2 = row[4];
  var ans3 = row[5];
  var ans4 = row[6];
  var fnb  = row[7];
  var url  = row[8];
  var ans5 = row[9];
  var ans6 = row[10];
  var ans7 = row[11];
  var ans8 = row[12];
  var ans9 = row[13];
  var ans10= row[14];
  var ans11= row[15];
  var ans12= row[16];
  var ans13= row[17];
  var ans14= row[18];
  var ans15= row[19];
  var ans16= row[20];




 if ( word == "M Choice") {form.addMultipleChoiceItem()                        
                 .setTitle(qst)
                 .setChoiceValues([ans1,ans2,ans3,ans4])
                 .showOtherOption(false);
                 }

 else if ( word == "Text") {form.addTextItem()
                                .setTitle(ans1)
                      }
 else if (word == "True/False")  {form.addMultipleChoiceItem()
                       .setTitle(qst)
                       .setChoiceValues(['True', 'False'])
                      }
 else if (word == "Video") { form.addVideoItem()
                           .setTitle(qst)
                           .setHelpText(qst)
                           .setVideoUrl(ans1);
                         }

 else if ( word == "Paragraph") {form.addParagraphTextItem()
                                .setTitle(qst)
                                }
 else if (word == "Grid") {form.addGridItem()
                         .setTitle(qst)
                         .setRows([ans1, ans2, ans3, ans4])
                         .setColumns(['Boring', 'So-so', 'Interesting']);
                        }
 else if (word == "List") {form.addListItem()
                         .setTitle(qst)
                         .setChoiceValues([ans1, ans2, ans3, ans4]);
                        }
 else if (word == "Image") {var img = UrlFetchApp.fetch(url);
                         form.addImageItem()
                         .setTitle(qst)
                         .setHelpText(qst) 
                         .setImage(img);



                         }

      }

      }

这将按照电子表格中输入的确切顺序创建表单,并允许通过电子表格分配值和问题类型。现在,我想扩展它以允许在电子表格中指明的表格中的分页符,方法是添加此内容。

 else if (word == "PageBreak") {form.addPageBreakItem()
                         .setTitle(qst);

工作正常。但是现在我注意到了一个有趣的功能,您可以在其中为问题分配响应以跳转到特定页面。在每个响应项中,您可以输入PageNavigationType。这是我遇到麻烦的一步。我创建了一个单独的列来指示页码,但是我并不确定如何将其链接到表单中的特定分页符。我看过的一个例子显示了分配给变量的分页符,然后问题响应将调用该变量。我设置脚本的方式并不允许我这样做。

1 个答案:

答案 0 :(得分:0)

通过定义引用要创建的页面,在选项/列表项一次完成后导航到新创建页面。

实施例

item.createChoice('Cats', form.addPageBreakItem().setTitle('TestPag')),

此示例是对以下小脚本的修改: this Google Developers page

它和我一起做了伎俩:)