Обработка разрывов страниц / разделов

#javascript #google-apps-script #google-forms

#javascript #google-приложения-скрипт #google-формы

Вопрос:

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

Я предполагаю, что критической точкой является forEach метод в основной функции:

 labels.forEach(function(label,i)
 

Я не уверен, какой метод мне следует использовать, чтобы основная функция обновляла все выпадающие списки.
Является

 FormApp.PageNavigationType.CONTINUE;
 

правильный метод для использования?

Вот код, который я до сих пор:

 var ssID = "...";
var formID = "...";
var wsData = SpreadsheetApp.openById(ssID).getSheetByName("data");  
var form = FormApp.openById(formID);
var section = form.getGoToPage(1);

function main(){
  var labels = wsData.getRange(1,1,1,wsData.getLastColumn()).getValues()[0];
 

  labels.forEach(function(label,i){
      var options = wsData
                          .getRange(2,i 1,wsData.getLastRow()-1,1)
                          .getValues()
                          .map(function(o){ return o[0]})
                          .filter(function(o){ return o !==""});
      updateDropDownUsingTitle(label,options);
  });


}


function updateDropDownUsingTitle(title,values) {

  
  var items = form.getItems();
  var titles = items.map(function(item){
    return item.getTitle();


  });

  var pos = titles.indexOf(title);
  if(pos !== -1){
  var item = items[pos];
  var itemID = item.getId();
  updateDropdown(itemID,values);
  }
}

function updateDropdown(id,values) {

  var item = form.getItemById(id);
  item.asListItem().setChoiceValues(values);
}
 

Комментарии:

1. Что вы подразумеваете под «я изо всех сил пытаюсь создать код, который перепрыгивает через разрывы разделов».?

2. При запуске кода я получаю следующую ошибку: Исключение: недопустимое преобразование для типа элемента: PAGE_BREAK . В строке 52. Потому что asListItem() пытается установить значения для элемента PAGE_BREAK . И я хочу найти способ обработать это исключение.

3. Вы можете попробовать перехватить эту функцию, мой вопрос в том, какова цель выпадающего списка?

Ответ №1:

Один из подходов заключается в фильтрации списка элементов таким образом, чтобы он содержал только ваши элементы выпадающего списка.

 var items = form.getItems();
var listItems = items.filter(item=>item.getType() === 'LIST')