Как стать автором
Обновить

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

Здорово. Спасибо за статью! Всегда хотел попробовать скрипты внутри гугла. Может посоветуете, где почитать о встроенных методах и классах?
P.S. js код ваш достаточно странный и старомодной. Как будто вы asp.net разработчик.

Спасибо за отзыв!
Я могу предложить только официальную документацию от Google
Все, что мне было нужно, брал там, можно ознакомиться с разделами Guide, Reference, Samples

Насчет js кода — изучал давно и не особо подробно, только азы, собственно)
Что касается определения границ диапазонов «на лету», то я использую именованные диапазоны для этого. И все хорошо «выцепляется» :).

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

В общем есть варианты.
Интересный вариант с шапкой, как-то я не сообразил. Спасибо! :)

Спасибо за статью. Раньше писал целые приложения на OpenOffice, но даже не задумывался что в инструментах google также есть возможность работать со скриптами.

Используйте
var arr=sheet.getDataRange().getValues();

Для забора всех данных с листа в массив.
Действительно, проглядел метод getDataRange, когда искал нужные функции.
Спасибо!

Немного потестировал и обнаружил, что если перед таблицей есть пустые строки и столбцы, то они тоже попадают в массив, который мы получаем, если используем getDataRange. В этом случае все равно придется откуда-то брать индексы начала полезных данных в таблице.
Но если данные в таблице располагаются с самого начала — с ячейки A1, то да, getDataRange — удобно)

По поводу столбцов — лучше добавить первую строку с названиями, а константами в коде задавать их имена (и при каждом обращении циклом определять текущий номер столбца). Это даст возможность скрипту отрабатывать тогда, когда порядок или количество столбцов в таблице будет меняться.
Значения лучше брать через getValues(), а потом проверять тип (дата или нет). При использовании getDisplayValues() получается ненужное приведение типа к строке, а потом обратное приведение к дате. Формат даты в таблице зависит в том числе от настроек пользовательского аккаунта (и парсер даты не отработает корректно на строке типа mm.dd.yyyy, например).
Про getDataRange() уже написали, в большинстве случаев его использование предпочтительнее (и быстрее работает).
А по стилистике два главных момента — используйте let и const (предпочтительно), или var. Но не одновременно. Константы как правило именуют прописными. JavaScript Coding Conventions в помощь — там много хорошего.

Спасибо большое за полезный отзыв. На будущее возьму советы на вооружение.

JavaScript Coding Conventions в помощь — там много хорошего.

Благодарю за отсылку, ознакомлюсь :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории