Найти в Дзене

Скрипты Google Apps: Руководство для начинающих

Оригинал статьи: https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/ Что такое Google Apps Script? Google Apps Script - это облачный скриптовый язык для расширения функциональности Google Apps и создания легких облачных приложений. Это означает, что вы пишете небольшие программы с помощью Apps Script для расширения стандартных функций приложений Google Workspace. Он отлично подходит для заполнения пробелов в ваших рабочих процессах. С помощью Apps Script вы можете делать такие интересные вещи, как автоматизация повторяющихся задач, создание документов, автоматическое отправление электронных писем людям и подключение ваших Google Таблиц к другим используемым вами сервисам. Написание вашего первого скрипта Google В этом руководстве по скриптам Google Sheets мы собираемся написать скрипт, привязанный к нашему Google Sheet. Это называется скриптом, привязанным к контейнеру. (Если вы ищете более сложные примеры и руководства, ознакомьтесь с полным списком статей Apps
Оглавление

Оригинал статьи: https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/

Что такое Google Apps Script?

Google Apps Script - это облачный скриптовый язык для расширения функциональности Google Apps и создания легких облачных приложений.

Это означает, что вы пишете небольшие программы с помощью Apps Script для расширения стандартных функций приложений Google Workspace. Он отлично подходит для заполнения пробелов в ваших рабочих процессах.

С помощью Apps Script вы можете делать такие интересные вещи, как автоматизация повторяющихся задач, создание документов, автоматическое отправление электронных писем людям и подключение ваших Google Таблиц к другим используемым вами сервисам.

Написание вашего первого скрипта Google

В этом руководстве по скриптам Google Sheets мы собираемся написать скрипт, привязанный к нашему Google Sheet. Это называется скриптом, привязанным к контейнеру.

(Если вы ищете более сложные примеры и руководства, ознакомьтесь с полным списком статей Apps Script на моей домашней странице.)

Hello world, в скрипте Google Apps

Давайте напишем нашу первую, чрезвычайно базовую программу, классическую программу “Hello world”, любимую факультетами компьютерного обучения по всему миру.

Начните с создания нового Google Sheet.

Затем выберите меню: Extensions > Apps Script

В вашем браузере откроется новая вкладка, представляющая собой окно редактора скриптов Google Apps:

По умолчанию он открывается с помощью одного файла Google Script (code.gs) и блока кода по умолчанию, myFunction():

function myFunction() {

}

В окне code между фигурными скобками после function myFunction() синтаксиса напишите следующую строку кода, чтобы она была у вас в окне code:

function myFunction() {

Browser.msgBox("Hello World!");

}

Теперь ваше окно кода должно выглядеть следующим образом:

-2

Авторизация скрипта Google Apps

Скрипты Google имеют надежную защиту для снижения риска, связанного с непроверенными приложениями, поэтому мы проходим процедуру авторизации при первой авторизации наших собственных приложений.

При первом нажатии кнопки "Выполнить" вам будет предложено авторизовать приложение для запуска:

-3

При нажатии на Просмотреть разрешения в свою очередь появляется другое окно, показывающее, какие разрешения необходимы вашему приложению для запуска. В этом случае приложение хочет просматривать ваши электронные таблицы на Google Диске и управлять ими, поэтому нажмите Разрешить (в противном случае ваш скрипт не сможет взаимодействовать с вашей электронной таблицей или делать что-либо еще):

-4
❗️При первом запуске скрипта apps вы можете увидеть экран “приложение не подтверждено” и предупреждения о том, хотите ли вы продолжить.

В нашем случае, поскольку мы являемся создателями приложения, мы знаем, что это безопасно, поэтому мы хотим продолжить. Кроме того, проекты apps script, представленные в этом посте, не предназначены для публичной публикации для других пользователей, поэтому нам не нужно отправлять их в Google на проверку (хотя, если вы хотите это сделать, вот дополнительная информация).

Нажмите кнопку “Дополнительно” в левом нижнем углу всплывающего окна "Просмотреть разрешения", а затем нажмите “Перейти к коду начального скрипта (небезопасно)” в нижней части следующего экрана, чтобы продолжить. Затем введите слова “Продолжить” на следующем экране, нажмите "Далее" и, наконец, просмотрите разрешения и нажмите “РАЗРЕШИТЬ”, как показано на этом изображении (на нем показан другой скрипт в старом редакторе):

-5

Более подробную информацию можно найти в этом подробном сообщении в блоге эксперта Google по разработке Мартина Хокси.

Запуск функции в Apps Script

После авторизации Google App script функция запустится (или execute).

Если что-то пойдет не так с вашим кодом, на этом этапе вы увидите предупреждающее сообщение (вместо желтого сообщения вы получите красное поле с сообщением об ошибке). В нем).

Вернитесь в свой Google Sheet, и вы должны увидеть результат работы вашей программы - всплывающее окно с классическим сообщением “Привет, мир!”:

-6

Нажмите на Ok, чтобы закрыть.

Отличная работа! Теперь вы написали свою первую программу apps script.

Переименование функции в Google Apps Script

Нам следует переименовать нашу функцию во что-то более значимое.

В настоящее время она называется myFunction, что является общим именем по умолчанию, генерируемым Google. Каждый раз, когда я хочу вызвать эту функцию (т.е. запустить ее, чтобы что-то сделать) Я бы написал myFunction(). Это не очень описательно, поэтому давайте переименуем ее в helloWorld(), что даст нам некоторый контекст.

Поэтому измените свой код в строке 1 из этого:

function myFunction() {

Browser.msgBox("Hello World!");

}

к этому:

function helloWorld() {

Browser.msgBox("Hello World!");

}

Обратите внимание, в Apps Script принято использовать соглашение об именовании camelCase, начинающееся со строчной буквы. Следовательно, мы называем нашу функцию helloWorld строчной h в начале слова "Привет" и заглавной W в начале слова "Мир".

Добавление пользовательского меню в Google Apps Script

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

Давайте исправим это, добавив пользовательское меню в строку меню нашей электронной таблицы, чтобы пользователь мог запускать скрипт в электронной таблице без необходимости открывать окно редактора.

На самом деле это на удивление легко сделать, для этого требуется всего несколько строк кода. Добавьте следующие 6 строк кода в окно редактора, над helloWorld() функцией, которую мы создали выше, как показано здесь:

function onOpen() {

const ui = SpreadsheetApp.getUi();

ui.createMenu('My Custom Menu')

.addItem('Say Hello', 'helloWorld')

.addToUi();

}

function helloWorld() {

Browser.msgBox("Hello World!");

}

Если вы сейчас вернетесь на вкладку "Электронная таблица" в браузере, ничего не изменится. Там у вас еще не будет пользовательского меню. Нам нужно повторно открыть нашу электронную таблицу (обновить ее) или сначала запустить наш onOpen() скрипт, чтобы появилось меню.

Для запуска onOpen() из окна редактора сначала выберите, а затем запустите функцию onOpen, как показано на этом рисунке:

-7

Теперь, когда вы вернетесь к своей электронной таблице, вы увидите новое меню в правой части от пункта "Help", которое называется "My Custom Menu". Нажмите на него, и откроется окно с выбором запуска вашей программы Hello World:

-8

Запуск функций с помощью кнопок в Google Таблицах

Альтернативный способ запуска Google Scripts из ваших таблиц - привязать функцию к кнопке в вашей таблице.

Например, вот шаблон счета-фактуры с кнопкой RESET для удаления содержимого:

-9

Для получения дополнительной информации о том, как это сделать, ознакомьтесь с этим сообщением: Добавьте кнопку Google Sheets для запуска скриптов

Примеры скриптов Google Apps

Макросы в Google Таблицах

Еще один отличный способ начать работу с Google Scripts - использовать макросы. Макросы - это небольшие программы в ваших Google Таблицах, которые вы записываете, чтобы их можно было использовать повторно (например, применяя стандартное форматирование к таблице). Они используют Apps Script под капотом, так что это отличный способ начать.

Подробнее: Полное руководство по простой автоматизации с использованием макросов Google Sheets

Пользовательская функция с помощью Google Apps Script

Давайте создадим пользовательскую функцию с помощью Apps Script, а также продемонстрируем использование сервиса Maps. Мы создадим небольшую пользовательскую функцию, которая вычисляет расстояние между двумя точками на основе оценок вождения сервиса Google Maps.

Цель состоит в том, чтобы иметь возможность иметь два географических названия в нашей электронной таблице и ввести новую функцию в новую ячейку, чтобы получить расстояние следующим образом:

-10

Решение должно быть:

-11

Скопируйте следующий код в окно редактора скриптов Apps и сохраните. В первый раз вам нужно будет один раз запустить скрипт из окна редактора и нажать “Разрешить”, чтобы убедиться, что скрипт может взаимодействовать с вашей электронной таблицей.

function distanceBetweenPoints(start_point, end_point) {

// get the directions

const directions = Maps.newDirectionFinder()

.setOrigin(start_point)

.setDestination(end_point)

.setMode(Maps.DirectionFinder.Mode.DRIVING)

.getDirections();

// get the first route and return the distance

const route = directions.routes[0];

const distance = route.legs[0].distance.text;

return distance;

}

Сохранение данных с помощью Google Apps Script

Давайте рассмотрим другой простой пример использования этого руководства по скрипту Google Sheets Apps.

Предположим, я хочу сохранять копии некоторых данных с периодическими интервалами, например:

-12

В этом скрипте я создал пользовательское меню для запуска моей основной функции. Основная функция saveData() копирует верхнюю строку моей электронной таблицы (текущие данные) и вставляет ее в следующую пустую строку под моим текущим диапазоном данных с новой временной меткой, тем самым “сохраняя” моментальный снимок во времени.

Код для этого примера:

// custom menu function

function onOpen() {

const ui = SpreadsheetApp.getUi();

ui.createMenu('Custom Menu')

.addItem('Save Data','saveData')

.addToUi();

}

// function to save data

function saveData() {

const ss = SpreadsheetApp.getActiveSpreadsheet();

const sheet = ss.getSheets()[0];

const url = sheet.getRange('Sheet1!A1').getValue();

const follower_count = sheet.getRange('Sheet1!B1').getValue();

const date = sheet.getRange('Sheet1!C1').getValue();

sheet.appendRow([url,follower_count,date]);

}

Пошаговое руководство по созданию и запуску этого скрипта смотрите в этом посте: Как сохранить данные в Google Sheets с метками времени с помощью скрипта Apps.

Пример скрипта Google Apps в документах Google

Google Apps Script ни в коем случае не ограничивается только таблицами, к нему можно получить доступ из других инструментов Google Workspace.

Вот краткий пример в документах Google, показывающий скрипт, который вставляет определенный символ везде, где находится ваш курсор:

-13

Мы делаем это с помощью Google App Scripts следующим образом:

1. Создайте новый документ Google

2. Откройте редактор сценариев из меню: Расширения> Apps Script

3. На вновь открывшейся вкладке Скрипт удалите весь шаблонный код (блок кода “myFunction”).

4. Скопируйте следующий код:

// code to add the custom menu

function onOpen() {

const ui = DocumentApp.getUi();

ui.createMenu('My Custom Menu')

.addItem('Insert Symbol', 'insertSymbol')

.addToUi();

}

// code to insert the symbol

function insertSymbol() {

// add symbol at the cursor position

const cursor = DocumentApp.getActiveDocument().getCursor();

cursor.insertText('§§');

}

5. Вы можете изменить специальный символ в этой строке

cursor.insertText('§§');

к тому, каким вы хотите его видеть, например

cursor.insertText('( ͡° ͜ʖ ͡°)');

6. Нажмите Сохранить и дайте проекту вашего скрипта имя (это не влияет на запуск, поэтому называйте его как хотите, например, Вставьте символ).

7. Запустите скрипт в первый раз, нажав на меню: Run > onOpen

8. Google распознает, что скрипт еще не авторизован, и спросит вас, хотите ли вы продолжить. Нажмите Продолжить

9. Поскольку это первый запуск скрипта, Google Docs просит вас авторизовать скрипт (я назвал свой скрипт “test”, который вы можете увидеть ниже):

-14
-15

10. Нажмите Разрешить

11. Теперь вернитесь к своему Google Doc.

12. У вас появится новый пункт меню, поэтому нажмите на него:

My Custom Menu > Insert Symbol

13. Нажмите на Вставить символ, и вы увидите символ, вставленный везде, где находится ваш курсор.

Совет по скрипту Google Apps: используйте класс Logger

Используйте класс Logger для вывода текстовых сообщений в файлы журнала, чтобы помочь в отладке кода.

Файлы журналов отображаются автоматически после завершения работы программы или при переходе в меню Выполнения в меню опций левой боковой панели (четвертый символ под символом часов).

Синтаксис в его самой базовой форме таков Logger.log(something in here). Здесь записываются значения переменных на разных этапах вашей программы.

Например, добавьте этот скрипт в файл кода в окне вашего редактора:

function logTimeRightNow() {

const timestamp = new Date();

Logger.log(timestamp);

}

Запустите скрипт в окне редактора, и вы должны увидеть:

-16

Реальные примеры из моей собственной работы

Я лишь наметил, что возможно с помощью G.A.S. для расширения возможностей Google Apps.

Вот пара интересных проектов, над которыми я работал:

1) Sheets / веб-приложение, состоящее из пользовательской веб-формы, которая загружает данные в Google Sheet (включая загрузку изображений на диск и отображение эскизов в электронной таблице), затем создает PDF-копию данных в электронной таблице и автоматически отправляет ее пользователям по электронной почте. А со всеми данными в главной таблице Google можно выполнять анализ данных, создавать информационные панели, отображающие данные в режиме реального времени, и делиться ими с другими пользователями. Совместная работа.

2) Панель мониторинга, которая подключается к учетной записи Google Analytics, собирает данные из социальных сетей, проверяет статус веб-сайта и отправляет по электронной почте итоговый скриншот в формате PDF в конце каждого дня.

-17

3) Шаблон оценки, который может отправлять оценки / отзывы учащимся по электронной почте и Slack одним щелчком мыши из Google Таблиц. Подробнее читайте в этой статье: Сэкономьте время благодаря пользовательской интеграции Google Sheets, Slack и электронной почты

Мой собственный путь в Google Apps Script

В мае 2017 года мой друг Джулиан из Measure School взял у меня интервью о моем пути в Apps Script и моих мыслях о начале работы.

Ресурсы скрипта Google Apps

Для дальнейшего чтения я создал этот список ресурсов для получения информации и вдохновения:

Документация

Официальная документация Google

Блог разработчиков Google Workspace

Сообщества

Группа скриптов Google Apps

Вопросы о Stack Overflow GAS

В других местах Интернета

Огромный обновленный список ресурсов Apps Script, размещенных на GitHub.

Для получения общих вопросов по Javascript я рекомендую эту страницу с обучением JavaScript от W3 Schools, когда вы начинаете.

Когда вы освоитесь с основами Javascript, я рекомендую полную
документацию по JavaScript от Mozilla.

Воображение и терпение в освоении - единственные ограничения на то, что вы можете делать и куда вы можете пойти с GAS. Я надеюсь, вы почувствуете вдохновение попробовать расширить свои таблицы и документы и автоматизировать эти скучные, повторяющиеся задачи!