Скрипт Google Apps добавляет дополнительные пустые вопросы в лист ответов формы при импорте из Google Таблиц.

Я использую скрипт Google Apps для добавления вопросов из Google Таблиц в Google Form. Списки считываются из двух отдельных массивов и добавляются как отдельные вопросы типа сетки. Я также установил лист как место назначения для результатов формы.

Когда я запускаю скрипт, форма обновляется идеально. Если нужно добавить 10 элементов, в форму добавляются 10 вопросов. Однако на связанной листе ответов формы часто добавляются дополнительные столбцы с заголовком «[Строка 1]». Количество дополнительных столбцов и их положение меняются, как кажется, каждый раз, когда я запускаю скрипт. Я не смог уловить никаких закономерностей.

Я знаю, что «Строка 1» отображается как первый элемент по умолчанию в вопросе типа сетки при создании вопроса в пользовательском интерфейсе формы. Я не уверен, связано ли это с этим. К вашему сведению - элементы сетки позволяют добавлять несколько строк вопросов, но я добавляю только один вопрос. Я знаю, что существует сетка с множественным выбором, но мне не нравится ее форматирование.

В качестве обходного пути я создал сценарий для удаления всех этих дополнительных столбцов, но мне бы очень хотелось выяснить, что на самом деле происходит.

Есть идеи о том, что происходит?

Вот часть моего кода:

function editForm()
{
  var setupSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Setup'); //Create variable for the Setup sheet
  var metricSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Final Metric Statements'); //Create variable for the Metric Statements sheet
  var form = FormApp.openById(setupSheet.getRange("D1").getValue()); //Open form using the form ID from the setup sheet  

  var pageFour = form.addPageBreakItem().setTitle('Questions');

  var emotLen = 0; //Counter for sub-emotion items
  var featLen = 0; //Counter for sub-feature items

//Count number of items for first list
  while (((metricSheet.getRange("C"+ (emotLen+2)).getValue()) != "") && ((metricSheet.getRange("C"+ (emotLen+2)).getValue()) != "#N/A")) //Go through sub-emotion column until a blank cell
  {
   emotLen++; //Increase the counter
  }

//Count number of items for second list
  while (((metricSheet.getRange("D"+ (featLen+2)).getValue()) != "") && ((metricSheet.getRange("D"+ (featLen+2)).getValue()) != "#N/A")) //Go through sub-feature column until a blank cell
  {
   featLen++; //Increase the counter
  }

  if (emotLen > 0)
  {
    var emotRng = metricSheet.getRange(2,3,emotLen); //Create a range for sub-emotions based on number of items and column
    var emotArray = emotRng.getValues(); //Copy the items into an array

    for (i=0; i <= (emotLen-1); i++)
    {
      var emotItem = form.addGridItem();
      emotItem.setRows(emotArray[i]);
      emotItem.setColumns(['Strongly Disagree', 'Disagree','Slightly Disagree', 'Neither Disagree or Agree', 'Slightly Agree', 'Agree', 'Strongly Agree', 'N/A']);//Add column header
      emotItem.setRequired(true);
    }
  }

  if (featLen > 0 )
  {
    var featRng = metricSheet.getRange(2,4,featLen); //Create a range for features based on number of items
    var featArray = featRng.getValues(); //Copy the items into an array

    for (i = 0; i <=(featLen-1); i++) //Go through all items in the array
    {
      var featItem = form.addGridItem();//Add item to survey
      featItem.setRows(featArray[i]); //Add row item
      featItem.setColumns(['Strongly Disagree', 'Disagree','Slightly Disagree', 'Neither Disagree or Agree', 'Slightly Agree', 'Agree', 'Strongly Agree', 'N/A']);//Add column header
      featItem.setRequired(true);
    }
  }

  //deleteRowColumns();  

  //Logger.log(emotLen, emotArray, featLen, featArray); //Logger used for debugging
}

А вот скриншот листа ответов формы с дополнительным столбцом:  введите описание изображения здесь


person Bobby Nguyen    schedule 03.04.2020    source источник


Ответы (1)


Похоже, это ошибка!

Я взял на себя смелость сообщить вам об этом в системе отслеживания проблем Google, подробно описав поведение:

Вы можете нажать ☆ рядом с номером проблемы в левом верхнем углу страницы, чтобы Google узнал, что с этим сталкивается больше людей, и поэтому с большей вероятностью это будет замечено быстрее.

Надеюсь, это будет вам полезно!

person Rafa Guillermo    schedule 06.04.2020