Недавно мне попалась таблица-опросник, в которой было достаточно много выпадающих списков с различными вариантами ответа.
Так как опросник был достаточно внушительным по количеству вопросов и их вариантов ответа, я решил сделать проще — к каждому списку получить возможные ответы, посмотреть на них и выбрать нужный.
На примере ниже, я покажу, как получать такие списки скриптом.
Допустим, есть следующий список:
Если просто обратиться к ячейке A7, которая содержит список через getValue()
или getValues()
, то результат будет следующий: ''
— пустота, потому что в самой ячейке не содержится ничего.
Для получения данных из списка в гугл скриптах есть класс DataValidation. И вот как можно получить этот список скриптом:
function getList() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const ws = ss.getSheetByName('Users');
const listValue = ws.getRange('A7').getDataValidation().getCriteriaValues()
console.log(listValue)
}
В результате консоль лог отобразит следующее:
Немного меняю код на получение первого элемента в массиве и вывожу их всех отдельно:
function getList() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const ws = ss.getSheetByName('Users');
const listValue = ws.getRange('A7').getDataValidation().getCriteriaValues()[0]
console.log(listValue)
listValue.forEach(element => console.log(element))
}
получая на выходе:
Вот и всё, ничего сложного. Если таких списков на листе несколько (или сколько угодно) — просто прохожусь по всем и каждый список завешиваю в объект, как значение (массив) для нового ключа.
Как получать выбранное значение из списков? Т. е. на событие изменение значение списка инициировать функцию с выводом выбранного значения.