Найти в Дзене

Первый проект с Google Sheets. Знакомство с Google Apps Script. Часть 1

Сервисы Google крайне популярны во всем мире. Gmail, Sheets, Drive, Forms и многое другое знакомо большинству пользователей интернет. Вряд ли можно найти человека, у которого нет почты Google. Нам, как программистам, интересна возможность использовать сервисов Google в собственных проектах. Google Apps Script позволяет не только интегрировать сервисы Гугла внутри своих проектов, но и выстраивать объемные мощные решения исключительно на стороне Google. Google Sheets могут выступать, как полноценная база данных, способную принимать и отправлять данные. Можно интегрировать таблицы с почтой, календарем, формами и другими продуктами компании. Даже полноценный веб-сайт можно построить исключительно на скриптах и HTML-шаблонах. Хватит хвалить, пора знакомится ближе. Все уроки цикла легко найти используя хештэг: #уроки google apps script spreadsheet или в моем блоге: Блог Программиста Знакомство с Google Apps Script Это полноценная платформа разработки на базе JavaScript. Фактически, разработ
Оглавление

Сервисы Google крайне популярны во всем мире. Gmail, Sheets, Drive, Forms и многое другое знакомо большинству пользователей интернет. Вряд ли можно найти человека, у которого нет почты Google.

Нам, как программистам, интересна возможность использовать сервисов Google в собственных проектах. Google Apps Script позволяет не только интегрировать сервисы Гугла внутри своих проектов, но и выстраивать объемные мощные решения исключительно на стороне Google.

Первый проект с Google Sheets. Знакомство с Google Apps Script
Первый проект с Google Sheets. Знакомство с Google Apps Script

Google Sheets могут выступать, как полноценная база данных, способную принимать и отправлять данные. Можно интегрировать таблицы с почтой, календарем, формами и другими продуктами компании. Даже полноценный веб-сайт можно построить исключительно на скриптах и HTML-шаблонах.

Хватит хвалить, пора знакомится ближе.

Все уроки цикла легко найти используя хештэг: #уроки google apps script spreadsheet
или в моем блоге: Блог Программиста

Знакомство с Google Apps Script

Это полноценная платформа разработки на базе JavaScript. Фактически, разработчикам доступен полноценный JS с библиотеками, которые обеспечивают легкий доступ к сервисам Google.

Для начала работы надо перейти по адресу https://script.google.com/home и нажать «Создать проект». Перед нами среда разработки Google. Начнем с названия проекта, чтобы он у нас не потерялся. Кликаю на заголовок и меняю на «First Project»

Знакомство с редактором Google Apps Script
Знакомство с редактором Google Apps Script

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

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

Готовим все необходимое для программирования

Нечего в бирюльки играть, будем сразу работать по-взрослому. Напишем проект, который получит данные с популярного ресурса для тестов https://jsonplaceholder.typicode.com

Получим данные о пользователях и сохраним их в таблицу. Не забудьте заранее создать табличку и скопировать ее идентификатор. Для этого, переходим на https://docs.google.com/spreadsheets/u/0/?tgif=d и жмем плюсик. Меняем название и копируем из адресной строки все, что находится между «spreadsheets/d/» и «/edit»

Идентификатор Google Sheet
Идентификатор Google Sheet

Это идентификатор таблицы. Он потребуется для открытия файла из скрипта. Поэтому, возвращаемся в среду разработки и жмем плюс, рядом с надписью «Файлы». Тип файла, соответственно, скрипт.

Я назвал файл «const», расширение «.gs» добавится автоматически. Как понятно из названия, в нем будут храниться константы. Запомните, деление на файлы, в Apps Script, условно. Любые переменные и функции доступны глобально. Поэтому, внимательно следите за именами функций и переменных, а так же используйте особенность для формирования удобной структуры проекта.

Структура файлов проекта. В code.gs хранится основной код, в const.gs лежат константы, которые видно на скриншоте.
Структура файлов проекта. В code.gs хранится основной код, в const.gs лежат константы, которые видно на скриншоте.

Получаем данные и сохраняем в таблицу

По умолчанию создаваемая функция myFunction() не имеет сакрального смысла. Спокойно переименовываем ее в, например, main(). Для начала пишем такой код:

Используя библиотеку UrlFetchApp получаем данные. Библиотека работает подобно стандартному методу fetch в JavaScript. После выводим ответ сервера в журнал выполнения.

При первом запуске скрипта, Google запрашивает права
При первом запуске скрипта, Google запрашивает права

При первом запуске, среда разработки попросит разрешения. Дадим его ей. После выбора аккаунта, найдите справа надпись мелким шрифтом «Скрыть дополнительные настройки», кликнув на нее ищите «Перейти на страницу "First Project" (небезопасно)».

Результат работы первого запроса через UrlFetchApp
Результат работы первого запроса через UrlFetchApp

Данные получены. Давайте обработаем и сохраним их. Для начала, распарсим ответ в JSON, через JSON.parse(). Далее скриптом обойдем весь массив данных и по очереди сохраним значения в таблице. Не забыв, предварительно, получить к ней доступ через SpreadsheetApp.

В примере, я использовал метод Array.map(). Если вы с ним плохо знакомы, обход можно реализовать обычным циклом JS:

Метода appendRow принимает одномерный массив, который после раскладывает по ячейкам в последней строке. Если строк не хватает, метод добавит новую строку. Обратите внимание, что информация помещается в строку идущую за последней содержащей информацию. Если у вас заполнено 10 строк, потом через 1000 строк где-то в ячейке есть значение, метод добавит новую информацию после той строки.

Вывод результата в таблицу Google Sheets
Вывод результата в таблицу Google Sheets

Минус метода appendRow в его медлительности. Чтобы посмотреть скорость выполнения, во всплывающем меню слева находим «Количество выполнений». У меня, время выполнения заняло 3,854 секунды. Большую часть времени ушло на добавление данных.

Оптимизируем код

Слегка изменим код. В методе map уберем добавление ячейки, вместо этого будем возвращать массивы значений и складывать их в массив data. После, используя getRange получим диапазон ячеек, в который будем вставлять значения. В нашем случае, указываем: стартовую строку (у меня 2 из-за заголовков таблицы, вообще отсчет идет с 1), стартовый столбец, сколько строк нужно включить в диапазон и количество столбцов диапазона. Соответственно, количество нужных строк получаем из длинны массива data, а количество столбцов считаем ручками. Можно заморочитсья и сделать более универсальный метод, получая размер нулевого элемента массива data... так будет более правильно и универсально.

Все, что осталось сделать, это сохранить значения используя setValues. Метод принимает массив массивов. Обратите внимание, что он бывает и в единичном числе — setValue(). Тогда нужно использовать одномерный массив и значения подставятся в одну строку.

История запусков скрипта. Видно резкое ускорение работы при добавлении скопом
История запусков скрипта. Видно резкое ускорение работы при добавлении скопом

Запускаем тест и видим огромную разницу во времени выполнения. Вместо, почти, 4х секунд получили 0,731 секунды.

Для первого раза, думаю достаточно. В следующий раз, сделаем для проекта веб-интерфейс. Тем, хочется получить материал быстрее, может прочитать следующий урок на моем сайте

Реклама

Изображение взято с сайта стихи.ру
Изображение взято с сайта стихи.ру

Мечтаете научиться программировать и зарабатывать хорошие деньги в разработке? Хватит мечтать, пора действовать. Записывайтесь на факультет «Fullstack JavaScript» от GeekBrains. Освойте с нуля язык программирования JavaScript, чтобы стать Fullstack-разработчиком. Вы научитесь создавать сайты, мобильные приложения и высоконагруженные сервисы.

Сейчас действует скидка, вы можете сэкономить 25% Тем более, обучение можно купить в рассрочку.
К сведению, зарплата Fullstack JavaScript легко достигает 250 000 руб., а устроиться можно удаленно из любой точки мира. GeekBrains еще и с трудоустройством помогает.

Хватит откладывать, переходите по ссылке и записывайтесь!

#уроки google apps script spreadsheet #блог программиста #google sheets #google script #javascript

Google
89,1 тыс интересуются