Введение в Google Apps Script

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

Настройка первого скрипта

Чтобы начать работу с Google Apps Script, необходимо открыть или создать таблицу Google Sheets. Вот как это можно сделать:

  1. Откройте или создайте Google Sheet: перейдите в Google Sheets и либо откройте существующую таблицу, либо создайте новую.
  2. Получите доступ к Apps Script: перейдите в меню и выберите «Расширения» > «Apps Script». Это откроет редактор Apps Script на новой вкладке.

Базовая структура скрипта

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

function insertDate() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var cell = sheet.getRange("B2");
  cell.setValue(new Date());
}
  • Сохраните скрипт: нажмите на значок дискеты или нажмите Ctrl+S (или Cmd+S на Mac), чтобы сохранить свой скрипт.
  • Запустите скрипт: вы можете запустить скрипт, нажав на кнопку воспроизведения или нажав кнопку запуска на панели инструментов.

Пользовательские функции в Google Sheets

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

Создание пользовательской функции

Вот пример пользовательской функции, которая преобразует дюймы в миллиметры:

/**
 * Преобразует дюймы в миллиметры.
 *
 * @param {number} inches Значение в дюймах.
 * @return {number} Значение в миллиметрах.
 * @customfunction
 */
function in2mm(inches) {
  return inches * 25.4;
}
  • Использование пользовательской функции: после сохранения скрипта вы можете использовать эту функцию в своей таблице Google Sheets так же, как и любую встроенную функцию. Например, =in2mm(A1) или =in2mm(10).

Типы данных и соображения

При работе с пользовательскими функциями важно понимать, как типы данных обрабатываются между Google Sheets и Apps Script.

  • Даты и время: они становятся объектами Date в Apps Script.
  • Значения длительности: также становятся объектами Date, но с ними может быть сложно работать.
  • Процентные значения: становятся десятичными числами в Apps Script (например, 10% становится 0,1).

Добавление пользовательских меню и кнопок

Чтобы сделать свои скрипты более удобными для пользователя, вы можете добавить пользовательские меню и кнопки в свою таблицу Google Sheets.

Пользовательские меню

Вот как можно добавить пользовательское меню для запуска функции insertDate:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Пользовательское меню')
      .addItem('Вставить дату', 'insertDate')
      .addToUi();
}
  • Сохранить и перезагрузить: сохраните скрипт и перезагрузите свою таблицу Google Sheets. Теперь вы должны увидеть новый пункт меню под названием «Пользовательское меню» с возможностью «Вставить дату».

Пользовательские кнопки

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

  1. Вставьте кнопку: в своей таблице Google Sheets перейдите в меню «Вставка» и выберите «Рисунок». Нарисуйте кнопку и нажмите «Сохранить и закрыть».
  2. Назначьте скрипт: щёлкните по кнопке, затем перейдите в меню с тремя вертикальными точками на кнопке и выберите «Назначить скрипт». Введите название вашей функции, например, insertDate.

Триггеры в Google Apps Script

Триггеры позволяют вашим скриптам запускаться автоматически на основе определённых событий или в определённое время.

Простые триггеры

Простые триггеры легко настроить, и они могут реагировать на такие события, как открытие или редактирование таблицы.

function onOpen() {
  // Код для запуска при открытии таблицы
}

function onEdit(e) {
  // Код для запуска при редактировании таблицы
}

Устанавливаемые триггеры

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

  1. Откройте страницу триггеров: в редакторе Apps Script нажмите на иконку часов в левой боковой панели.
  2. Создайте триггер: нажмите на значок +, чтобы создать новый триггер. Вы можете настроить его для запуска по расписанию, при редактировании или других событиях.

Вот пример настройки триггера для запуска функции insertDate каждую минуту:

sequenceDiagram participant G as Google Sheets participant A as Apps Script participant T as Trigger T->>A: Trigger Event (Every Minute) A->>G: Run insertDate Function G->>A: Update Cell with Current Date

Подключение Google Sheets к Google Forms

Apps Script также может интегрировать Google Sheets с Google Forms, позволяя автоматизировать задачи на основе отправки форм.

Создание связанного с формой скрипта

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

function onFormSubmit(e) {
  var sheet = e.source.getActiveSheet();
  var range = e.range;
  // Код обработки данных отправки формы
}
  • Настройка триггера: перейдите на страницу триггеров и настройте триггер onFormSubmit.

Веб-хуки для Google Sheets

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

  1. Установите дополнение Webhooks: перейдите в Интернет-магазин Google Workspace Marketplace и установите дополнение Webhooks for Sheets.
  2. Включите API: следуйте инструкциям, чтобы включить API Google Apps Script.
  3. Настройте веб-хук: используйте дополнение для настройки веб-хука и разверните его как веб-приложение.
sequenceDiagram participant E as External Service participant W as Webhook participant G as Google Sheets E->>W: Send Data (POST/GET) W->>G: Log Data into Sheet G->>W: Confirm Data Received

Оптимизация и лучшие практики

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

  • Минимизируйте вызовы функций: каждый вызов пользовательской функции может замедлить работу вашей таблицы. Попробуйте минимизировать количество вызовов.
  • Используйте кэширование: если ваш скрипт получает данные из внешних источников, рассмотрите возможность использования кэширования для уменьшения количества запросов.

Заключение

Google Apps Script — мощный инструмент для автоматизации и расширения функциональности Google Sheets. Благодаря пользовательским функциям, меню, кнопкам и триггерам вы можете создавать интерактивные и автоматизированные таблицы. Независимо от того, новичок вы или опытный разработчик, Apps Script предлагает широкий спектр возможностей для повышения эффективности вашего рабочего процесса и производительности.