Задать выбор столбцов в элементе сетки с множественным выбором формы Google? - PullRequest
0 голосов
/ 20 января 2019

Я изо всех сил пытался получить правильный код, чтобы установить выбор столбцов в сетке выбора нескольких форм Google.Мой код продолжает выдавать мне ошибку отладки

TypeError: Не удается найти функцию setColumns в объекте Item.(строка 26, файл «Заполнить выбор угроз»).

Я пробовал setColumnChoices и setColumns и, похоже, у меня одинаковые плохие результаты.

function PopulateHazardChoices(){

// call the form and connect to the Question Item
  var form = FormApp.openById("FakeFormID");  
  var QuestionItem = form.getItemById("fakeItemID");

// identify the sheet Hazard Choices needed to populate the question selections
  var ss = SpreadsheetApp.getActive();
  var DataFactors = ss.getSheetByName("DataFactors");

// grab the Hazards in the first column of the sheet from the Group of Hazard Choices
  // use sheet Row Number for First Hazard in the group of choices; use 1 as the index column A; number of rows included in range
  // 7,1,3 would be Row 7, Column A, 4 rows in the range - therefore A7 through A10

  // [Conditions of Runway] Hazard Group
  var HazardValues = DataFactors.getRange(7,1,4);
  var HazardSelections = [];

// convert the array ignoring empty cells
  for(var i = 0; i < HazardValues.length; i++)    
    if(HazardValues[i][0] != "")
      HazardSelections[i] = HazardSelections[i][0];

// populate the Wind Question with the array data
  QuestionItem.setColumns(HazardSelections);
}  

План состоит в том, чтобынеобходимо заполнить столбцы таблицы из листа под названием «DataFactors», чтобы любые изменения в списке опасностей были точно такими же в форме.Когда пользователь отправляет форму, варианты сравниваются с листом и присваивается значение балла.Надеемся, что это решит проблему с несоответствиями между отправкой формы и значениями опасности.У меня были хорошие результаты при использовании выпадающих списков, но я не могу заставить метод работать с сетками с множественным выбором.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Рубен, спасибо за помощь. Вот завершенные сценарии с несколькими различными типами элементов формы (Grid, CheckboxGrid и MultipleChoice). Спасибо, Jack

function PopulateHazardChoices(){

// call the sheet and form needed to populate the question selections
  var ss = SpreadsheetApp.getActive();
  var DataFactors = ss.getSheetByName("RiskValues");  
  var form = FormApp.openById("FakeFormID");

// For each Group of Hazard Choices - repeat the folowing
  // identify the Hazards in Column A of the sheet for each Group of Hazard Choices 
     // Use Row Number for First Hazard in the Group of Harard Choices
     // Use 1 as the index Column A
     // Number of rows included in the Group
     // 2,1,3 would be Row 2, Column A, 3 rows in the range - therfore A2 through A4
  //declare QuestionItem including type of item i.e. .asGridItem();  
  // populate the Question with the array data

// Crew Compliment - Hazard Group A3 through A5
  var HazardValues = DataFactors.getRange(3,1,3).getValues();  
  var QuestionItem = form.getItemById("FakeItemID").asGridItem();
  QuestionItem.setColumns(HazardValues);
  //End of Hazard Group

// pAve Rotorcraft - Hazard Group A40 through A43
  var HazardValues = DataFactors.getRange(40,1,4).getValues();  
  var QuestionItem = form.getItemById("FakeItemID").asCheckboxGridItem();
  QuestionItem.setColumns(HazardValues);
  //End of Hazard Group

// paVe Runway Length - Hazard Group A72 through A75
  var HazardValues = DataFactors.getRange(72,1,4).getValues();  
  var QuestionItem = form.getItemById("FakeItemID").asMultipleChoiceItem();
  QuestionItem.setChoiceValues(HazardValues);
  //End of Hazard Group


} //End function PopulateHazardChoices

// Edit Journal - Created December 2019, Jack Gainer, TSTC Chief Pilot
  // Initial Implentation Tests - January 2019
  // Add remaiining Hazard Group setValues code - February 2019
0 голосов
/ 21 января 2019

Следующий пример для нового элемента

С Класс GridItem

// Open a form by ID and add a new grid item.
var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
var item = form.addGridItem();
item.setTitle('Rate your interests')
    .setRows(['Cars', 'Computers', 'Celebrities'])
    .setColumns(['Boring', 'So-so', 'Interesting']);

Если элемент уже существует, то после получения элемента и перед использованием setColumns следует использовать asGridItem элемента интерфейса.

var gridItem = QuestionItem.asGridItem();
gridItem.setColumns(HazardSelections);
...