#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')