Используйте Google Apps Script для расширения функционала Google Sheets. Добавляйте в Sheets пользовательские меню , диалоговые окна и боковые панели . Пишите собственные функции для Sheets и интегрируйте их с другими сервисами Google, такими как Google Calendar, Google Drive и Gmail.
Большинство скриптов, разработанных для Google Sheets, манипулируют массивами для взаимодействия с ячейками, строками и столбцами электронной таблицы. Если вы не знакомы с массивами в JavaScript, Codecademy предлагает отличный обучающий модуль по массивам . Этот курс не разработан компанией Google и не связан с ней.
Для быстрого ознакомления с использованием Apps Script с Google Sheets см. краткое руководство по макросам, меню и пользовательским функциям, рассчитанное на 5 минут.
Начать
Apps Script включает специальные API для программного создания, чтения и редактирования таблиц. Apps Script взаимодействует с таблицами двумя способами: любой скрипт может создавать или изменять электронную таблицу, если у пользователя, создавшего скрипт, есть соответствующие права доступа, а также скрипт может быть привязан к электронной таблице. Привязанные скрипты обладают специальными возможностями для изменения пользовательского интерфейса или реагирования на открытие электронной таблицы. Чтобы создать привязанный скрипт, выберите «Расширения» > «Apps Script» в меню «Таблицы».
Сервис «Электронные таблицы» рассматривает листы как сетку, работающую с двумерными массивами. Для извлечения данных из электронной таблицы необходимо получить доступ к таблице, в которой хранятся данные, получить диапазон, содержащий данные, а затем получить значения ячеек. Apps Script упрощает доступ к данным, считывая структурированные данные из электронной таблицы и создавая для них объекты JavaScript.
Прочитать данные
Предположим, у вас есть список названий и номеров товаров, который вы храните в электронной таблице, как показано на следующем изображении.

В следующем примере показано, как получить и зарегистрировать названия и номера товаров.
function logProductInfo() {
const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getDataRange().getValues();
for (let i = 0; i < data.length; i++) {
Logger.log('Product name: ' + data[i][0]);
Logger.log('Product number: ' + data[i][1]);
}
}
Просмотреть журналы
Чтобы просмотреть записанные данные, в верхней части редактора скриптов нажмите «Журнал выполнения» .
Запись данных
Чтобы сохранить данные, такие как название и номер нового продукта, в электронную таблицу, добавьте следующий код в конец скрипта.
function addProduct() {
const sheet = SpreadsheetApp.getActiveSheet();
sheet.appendRow(['Cotton Sweatshirt XL', 'css004']);
}
Приведенный выше код добавляет новую строку в конец электронной таблицы с указанными значениями. При запуске этой функции в электронную таблицу будет добавлена новая строка.
Пользовательские меню и интерфейсы
Настройте Sheets, добавив пользовательские меню, диалоговые окна и боковые панели. Чтобы узнать основы создания меню, см. руководство по меню . Чтобы узнать о настройке содержимого диалогового окна, см. руководство по службе HTML .
Прикрепите функцию скрипта к изображению или рисунку в электронной таблице; функция будет выполняться при щелчке пользователя по изображению или рисунку. Для получения дополнительной информации см. раздел «Изображения и рисунки в таблицах» .
Если вы планируете опубликовать свой пользовательский интерфейс в качестве дополнения , следуйте руководству по стилю , чтобы обеспечить единообразие со стилем и расположением элементов в редакторе таблиц.
Подключиться к Google Forms
Подключите Google Forms к Google Sheets через сервисы «Формы» и «Электронные таблицы» . Эта функция автоматически создает форму Google на основе данных из электронной таблицы. Apps Script также позволяет использовать триггеры , такие как onFormSubmit для выполнения определенного действия после того, как пользователь ответит на форму. Чтобы узнать больше о подключении Google Sheets к формам, попробуйте краткое руководство «Управление ответами в формах» (5 минут).
Форматирование данных
Класс Range имеет такие методы, как setBackground , для доступа и изменения формата ячейки или диапазона ячеек. В следующем примере задается стиль шрифта для диапазона:
function formatMySpreadsheet() {
// Set the font style of the cells in the range of B2:C2 to be italic.
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheets()[0];
const cell = sheet.getRange('B2:C2');
cell.setFontStyle('italic');
}
Проверка данных
Получите доступ к существующим правилам проверки данных в Google Sheets или создайте новые правила. Например, в следующем примере показано, как установить правило проверки данных, разрешающее ввод в ячейку только чисел от 1 до 100.
function validateMySpreadsheet() {
// Set a rule for the cell B4 to be a number between 1 and 100.
const cell = SpreadsheetApp.getActive().getRange('B4');
const rule = SpreadsheetApp.newDataValidation()
.requireNumberBetween(1, 100)
.setAllowInvalid(false)
.setHelpText('Number must be between 1 and 100.')
.build();
cell.setDataValidation(rule);
}
Для получения более подробной информации о работе с правилами проверки данных см. SpreadsheetApp.newDataValidation , DataValidationBuilder и Range.setDataValidation
Диаграммы
Встраивайте диаграммы в электронную таблицу, отображающие данные в определенном диапазоне. В следующем примере создается встроенная столбчатая диаграмма, предполагая, что у вас есть данные, пригодные для построения диаграмм, в ячейках A1:B15 :
function newChart() {
// Generate a chart representing the data in the range of A1:B15.
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheets()[0];
const chart = sheet.newChart()
.setChartType(Charts.ChartType.BAR)
.addRange(sheet.getRange('A1:B15'))
.setPosition(5, 5, 0, 0)
.build();
sheet.insertChart(chart);
}
Чтобы узнать больше о встраивании диаграммы в электронную таблицу, см. EmbeddedChart и конкретные конструкторы диаграмм, такие как EmbeddedPieChartBuilder .
Настраиваемые функции в Google Таблицах
Пользовательская функция похожа на встроенную функцию электронных таблиц, например, =SUM(A1:A5) за исключением того, что вы определяете поведение функции с помощью Apps Script. Например, вы можете создать пользовательскую функцию, in2mm() , которая преобразует значение из дюймов в миллиметры, а затем использовать формулу в своей электронной таблице, введя =in2mm(A1) или =in2mm(10) в ячейку.
Чтобы узнать больше о пользовательских функциях, попробуйте 5-минутный краткий обзор «Меню и пользовательские функции» или ознакомьтесь с более подробным руководством по пользовательским функциям .
Макросы
Макросы — это ещё один способ выполнения кода Apps Script из пользовательского интерфейса Google Sheets. В отличие от пользовательских функций, их можно активировать с помощью сочетания клавиш или через меню Sheets. Дополнительную информацию см. в разделе «Макросы в Sheets» .
Дополнения для Google Таблиц
Дополнения — это специально упакованные проекты Apps Script, которые работают внутри Sheets и могут быть установлены из магазина дополнений Sheets. Если вы разработали скрипт для Sheets и хотите поделиться им, Apps Script позволяет опубликовать ваш скрипт в качестве дополнения, чтобы другие пользователи могли его установить.
Производительность и масштабируемость
По мере роста ваших наборов данных могут возникать проблемы с производительностью. Для оптимизации электронных таблиц и скриптов:
- Следуйте передовым практикам : ознакомьтесь с руководством по передовым практикам , чтобы получить советы по минимизации обращений в службу поддержки и использованию пакетных операций.
- Оптимизируйте формулы : если ваша электронная таблица тормозит из-за сложных формул (таких как
VLOOKUP,ARRAYFORMULAилиIMPORTRANGE), рассмотрите возможность использования Apps Script для выполнения этих вычислений в памяти и записи результатов обратно партиями. - Рассмотрите альтернативные базы данных : для очень больших наборов данных (около 10 миллионов ячеек) или для высокочастотного ввода данных (например, множество связанных форм) рассмотрите возможность использования Google Cloud SQL с JDBC или BigQuery .
Триггеры
Скрипты, привязанные к файлу Sheets, могут использовать простые триггеры, такие как функции onOpen() и onEdit() для автоматического реагирования на действия пользователя, имеющего права редактирования электронной таблицы, при открытии или редактировании этой таблицы. Подобно простым триггерам, устанавливаемые триггеры позволяют Sheets автоматически запускать функцию при возникновении определенного события. Однако устанавливаемые триггеры предлагают большую гибкость, чем простые триггеры, и поддерживают следующие события: открытие, редактирование, изменение, отправка формы и события, зависящие от времени (часы).