从Google电子表格创建Google表单

石冢

我已经创建了一个Google电子表格,可以自动转换为Google表单,因此我不必手动将所有问题输入到Google表单中。

我正在编写google app脚本并设法解决所有问题。我试图根据表格的第一列将表格分为几部分。因此,如果第一列为“ 1”,则与之对应的问题应位于第一部分,如果为“ 2”,则应创建另一部分。依此类推。

我怎样才能做到这一点?代码是什么?我已经将Google工作表附加为Google电子表格

function myFunction() 
{
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
  var range = ss.getDataRange(); 
  var data = range.getValues();
  var numberRows = range.getNumRows();
  var numberColumns = range.getNumColumns();
  var firstRow = 1;
  var form = FormApp.openById('1hIQCLT_JGLcvjz44vXTvP5ziia6NnwCqWBxYT4h2uCk');


  var items = form.getItems();
  var ilength = items.length;
  for (var i=0; i<items.length; i++)

  {

    form.deleteItem(0);

  }

  for(var i=0;i<numberRows;i++)
  {
    Logger.log(data);
    var questionType = data[i][0]; 
    if (questionType=='')

    {
      continue;
    }
    //choose the type of question from the first column of the spreadsheet
    else if(questionType=='1')
    {
      var rowLength = data[i].length;
      var currentRow = firstRow+i;
      var currentRangeValues = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange(currentRow,1,1,rowLength).getValues();
      var getSheetRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getDataRange();
      var numberOfColumnsSheet = getSheetRange.getNumColumns();
      var numberOfOptionsInCurrentRow = numberOfColumnsSheet;
      var lastColumnInRange = String.fromCharCode(64 + (numberOfOptionsInCurrentRow));
      var range_string = 'C' + currentRow + ":" + lastColumnInRange + currentRow;
      var optionsArray = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1').getRange(range_string).getValues();
      var choicesForQuestion =[];
      for (var j=0;j<optionsArray[0].length;j++)
      {
        choicesForQuestion.push(optionsArray[0][j]);
      }
      form.addMultipleChoiceItem().setTitle(data[i][1]).setHelpText("").setChoiceValues(choicesForQuestion).setRequired(true); 

    }

    else
    {
      continue;
    }

  } 

  form.addParagraphTextItem()
  .setTitle('Please specify and attach relevant documents');          // add the text question at the last

  form.addPageBreakItem().setTitle('Identity - Asset Management').setHelpText("")();

}

googleSheet

维陶塔斯

如果您想在下一节中使用完全相同的格式,则可以使用一个简单的计数器。我编写了一个成功的脚本变体,但这取决于您真正想要的是什么。

我会做的一些改变

for (i = 0; i < items.length; i++) { 
  form.deleteItem(items[i])
}

代替当前form.deleteItem(0);否则,我会看到您获取了所有数据,但是您没有使用它们。每次需要该选项时都调用电子表格应用程序会导致其运行慢得多。关于该for循环的更多信息:将循环移到Logger.log(data);外部。每次转到数据的下一行时,没有理由继续记录整个数据范围。或将其更改为Logger.log(data[i]);更有意义。

您已经做了一个

if (questionType=='') {
  continue;
}

跳过空白行,所以不确定最后else的含义是什么无论如何,循环将自行进入下一个选项。

现在,您设置的工作方式是,电子表格中的问题必须有序。那就是你不能拥有

  • 第1节
  • 第二节
  • 第1节

因为这将创建3个部分,而不是2个部分。但是,让我们继续进行以下假设:电子表格将仅以如下方式设置:

  • 第1节
  • 第1节
  • 第二节

在这种情况下,您应该利用自己的,data在循环之前的某个位置questionType添加计数器var sectionCount = 0然后在for循环中执行一个简单的操作

else if (questionType != sectionCount) {
  form.addSectionHeaderItem().setTitle('Section ' + questionType)
  sectionCount++
}

这将创建该部分(前提是数字在A列中始终始终增加1)。然后,在同一for循环中,您不需要任何其他if语句,而只需使用

items = data[i].slice(2, data[i].length + 1)
items = items.filter(chkEmpty)

form.addMultipleChoiceItem().setTitle(data[i][1]).setChoiceValues(items)

在哪里

function chkEmpty(val){
  return val != ''
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从Google电子表格创建Google表单/测验

来自分类Dev

Google 表单 - 电子表格和数据插入

来自分类Dev

如何从模板Google电子表格创建副本

来自分类Dev

从电子表格创建Google日历定期活动

来自分类Dev

Google HTML从电子表格创建列表

来自分类Dev

如何使用Google电子表格作为后端创建HTML数据输入表单

来自分类Dev

Google电子表格脚本

来自分类Dev

Google电子表格公式

来自分类Dev

新的Google电子表格#REF从旧的Google电子表格转换

来自分类Dev

根据Google表格电子表格中的动态数据更新Google表单字段

来自分类Dev

Google电子表格中表格的总和范围

来自分类Dev

Google电子表格和表格

来自分类Dev

Google 电子表格:来自数据的表格

来自分类Dev

电子表格上的Google脚本-创建链接以通过表格修改答案

来自分类Dev

使用Google云端硬盘中的Google Spreadsheets API创建电子表格

来自分类Dev

在Java的Google驱动器中使用Google Spreadsheet API创建电子表格

来自分类Dev

获取表单输入文本值以插入到Google电子表格中

来自分类Dev

根据电子表格中的值自动完成Google表单

来自分类Dev

Google电子表格网站表单jQuery脚本阻止发送

来自分类Dev

使用表单更新Google电子表格上的现有数据?

来自分类Dev

如何根据现有电子表格更新Google表单下拉列表?

来自分类Dev

动态更新电子表格中列的Google表单“从列表中选择”选项

来自分类Dev

如何从电子表格捕获所有数据到Google表单

来自分类Dev

通过电子表格将Google表单同步到Firebase

来自分类Dev

Google表单提交触发器和电子表格填充之间的竞争状况?

来自分类Dev

Google Docs API-作为表单响应的电子表格

来自分类Dev

获取表单输入文本值以插入到Google电子表格中

来自分类Dev

Google HTML服务:将表单中多项选择的值写入电子表格

来自分类Dev

如何使用 JavaScript 将数据从 HTML 表单发送到 Google 电子表格?

Related 相关文章

  1. 1

    从Google电子表格创建Google表单/测验

  2. 2

    Google 表单 - 电子表格和数据插入

  3. 3

    如何从模板Google电子表格创建副本

  4. 4

    从电子表格创建Google日历定期活动

  5. 5

    Google HTML从电子表格创建列表

  6. 6

    如何使用Google电子表格作为后端创建HTML数据输入表单

  7. 7

    Google电子表格脚本

  8. 8

    Google电子表格公式

  9. 9

    新的Google电子表格#REF从旧的Google电子表格转换

  10. 10

    根据Google表格电子表格中的动态数据更新Google表单字段

  11. 11

    Google电子表格中表格的总和范围

  12. 12

    Google电子表格和表格

  13. 13

    Google 电子表格:来自数据的表格

  14. 14

    电子表格上的Google脚本-创建链接以通过表格修改答案

  15. 15

    使用Google云端硬盘中的Google Spreadsheets API创建电子表格

  16. 16

    在Java的Google驱动器中使用Google Spreadsheet API创建电子表格

  17. 17

    获取表单输入文本值以插入到Google电子表格中

  18. 18

    根据电子表格中的值自动完成Google表单

  19. 19

    Google电子表格网站表单jQuery脚本阻止发送

  20. 20

    使用表单更新Google电子表格上的现有数据?

  21. 21

    如何根据现有电子表格更新Google表单下拉列表?

  22. 22

    动态更新电子表格中列的Google表单“从列表中选择”选项

  23. 23

    如何从电子表格捕获所有数据到Google表单

  24. 24

    通过电子表格将Google表单同步到Firebase

  25. 25

    Google表单提交触发器和电子表格填充之间的竞争状况?

  26. 26

    Google Docs API-作为表单响应的电子表格

  27. 27

    获取表单输入文本值以插入到Google电子表格中

  28. 28

    Google HTML服务:将表单中多项选择的值写入电子表格

  29. 29

    如何使用 JavaScript 将数据从 HTML 表单发送到 Google 电子表格?

热门标签

归档