К основному контенту

Сообщения

Показаны сообщения с ярлыком "SpreadsheetApp"

Как создать чекбокс программно

Пока не удалось в оригинальном билдере SpreadsheetApp найти конструктор для галочек Logger.log(JSON.stringify( Object.keys(SpreadsheetApp.newDataValidation()).sort(), null, "  " )); Поэтому придется воспользоваться расширенной службой Google Sheets. Как включить эту ботву, можно прочитать в статье " Расширенные службы Google ". Суть: Создаем объект-ресурс, его заполняем запросами. Конструкция запроса на назначение валидации данных довольно проста:  Указываем диапазон Задаем правило и его параметры. Далее вызываем стандартный метод выполнения пакета запросов из ресурса.

Удаление строк по условию

Часто возникает задача удаления строк из Таблицы Google по какому-либо условию. Разнообразие условий так велико, что порой приходится создавать метод "удаления строк" снова и снова. Довольно утомительно. Для простых офсных скриптов можно применить сниппет, описанный ниже. Основная идея заключается в том, чтобы взять весь массив данных и перебрать его в обратном порядке. При переборе каждая строка передается в функцию обратного вызова, которая принимет решение удалить строку или нет. Для оптимизации количество последовательных строк суммируется, и для удаления применяется метод deleteRows(rowPosition, howMany) класса Sheet В примере ниже скрипт удаляет строки автивного листа, в которых ячейки из диапазона D27:D77 и F27:F77 попарно пустые

Как открыть ссылку с помощью Google Apps Script?

Часто возникает задача, в которой требуется по результатам работы скрипта открыть ссылку в новом окне/вкладке браузера. В Google Apps Script не существует методов взаимодействия с браузером. Единственная более-менее реальная связь между пользователем и сервером скрипта находится в интерфейсе реализуемой программы. Это может быть Таблица, Документ или Web приложение. Все они реализуются через HtmlService. Например, SpreadsheetApp.getUi().showModelessDialog(htmlOutput, "title"); Понятно, что в построенном htmlOutput , можно выполнить код для текущего window . Например, window.open(url, "_blank"); Идея обернутая кодом ниже по тексту. Пользователь выбирает ячейку в Таблице (или все, что угодно, что формирует ссылку). На сервере На клиенте строится окно диалога, открывается новая вкладка браузера и закрывается окно диалога, при успешном выполнении условия. Иначе появляется сообщение, что переданный параметр не ссылка. Этот метод имеет существенный недостаток...

Как получить несколько выделенных диапазонов?

Чтобы получить список выделенных пользователем диапазонов, необходимо у активной Таблицы вызвать метод getActiveRangeList() . Он возвращает структуру RangeList() , которая может быть очищена одним из методов clean , или изменить содержание и форматирование через set -методы. Единственный get -метод getRanges() возвращает список (массив) выделенных пользователем диапазонов. Из особенностей можно отметить порядок возвращаемых данных. Т.к. массив в gs - упорядоченный обьект, то элементы в нем находятся в порядке выделения их пользователем. Результат работы программы, листинг которой будет приведен ниже: A1 A2 A3 A4 B4 B3 B2 B1 Приятная возможность задать пользователю дополнительный квест ;-) Далее приведена программа, которая выводит на экран модальное окно со списком выделенных пользователем диапазонов: