Расширение Google Таблиц

Google Apps Script позволяет вам делать новые и интересные вещи с помощью Google Sheets. Вы можете использовать Apps Script для добавления в Google Таблицы пользовательских меню , диалоговых окон и боковых панелей . Он также позволяет вам писать собственные функции для Таблиц, а также интегрировать Таблицы с другими сервисами Google, такими как Календарь, Диск и Gmail.

Большинство скриптов, разработанных для Google Sheets, манипулируют массивами для взаимодействия с ячейками, строками и столбцами в электронной таблице. Если вы не знакомы с массивами в JavaScript, Codecademy предлагает отличный обучающий модуль по массивам . (Обратите внимание, что этот курс не был разработан и не связан с Google.)

Краткое введение в использование Apps Script с Google Sheets см. в 5-минутном кратком руководстве по макросам, меню и пользовательским функциям .

Начать

Apps Script включает специальные API, позволяющие программно создавать, читать и редактировать Google Таблицы. Apps Script может взаимодействовать с Google Sheets двумя основными способами: любой скрипт может создавать или изменять электронную таблицу, если у пользователя скрипта есть соответствующие разрешения для электронной таблицы, а скрипт также можно привязать к электронной таблице, что дает скрипту особые возможности для изменения. пользовательский интерфейс или отвечать при открытии электронной таблицы. Чтобы создать привязанный скрипт, выберите «Расширения» > «Скрипт приложений» в Google Sheets.

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

Чтение данных

Предположим, у вас есть список названий и номеров продуктов, который вы храните в электронной таблице, как показано на рисунке ниже.

В приведенном ниже примере показано, как получить и зарегистрировать названия и номера продуктов.

function logProductInfo() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  for (var i = 0; i < data.length; i++) {
    Logger.log('Product name: ' + data[i][0]);
    Logger.log('Product number: ' + data[i][1]);
  }
}

Просмотр журналов

Чтобы просмотреть зарегистрированные данные, в верхней части редактора сценариев нажмите «Журнал выполнения» .

Запись данных

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

function addProduct() {
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.appendRow(['Cotton Sweatshirt XL', 'css004']);
}

Приведенный выше код добавляет новую строку внизу таблицы с указанными значениями. Если вы запустите эту функцию, вы увидите новую строку, добавленную в электронную таблицу.

Пользовательские меню и пользовательские интерфейсы

Вы можете настроить Google Таблицы, добавив собственные меню, диалоговые окна и боковые панели. Чтобы изучить основы создания меню, смотрите руководство по меню . Чтобы узнать о настройке содержимого диалогового окна, см. руководство по сервису HTML .

Вы также можете прикрепить функцию сценария к изображению или рисунку в электронной таблице; функция будет выполняться, когда пользователь нажимает на изображение или рисунок. Дополнительную информацию см. в разделе Изображения и рисунки в Google Таблицах .

Если вы планируете опубликовать свой собственный интерфейс как часть надстройки , следуйте руководству по стилю, чтобы обеспечить соответствие стилю и макету редактора Google Таблиц.

Подключение к Google Формам

Apps Script позволяет подключать Google Forms к Google Sheets через службы форм и электронных таблиц . Эта функция может автоматически создавать форму Google на основе данных в электронной таблице. Apps Script также позволяет использовать триггеры , такие как onFormSubmit для выполнения определенного действия после того, как пользователь ответит на форму. Чтобы узнать больше о подключении Google Таблиц к Google Forms, попробуйте 5-минутное краткое руководство по управлению ответами для Google Forms .

Форматирование

Класс Range имеет такие методы, как setBackground(color) для доступа и изменения формата ячейки или диапазона ячеек. В следующем примере показано, как можно установить стиль шрифта диапазона:

function formatMySpreadsheet() {
  // Set the font style of the cells in the range of B2:C2 to be italic.
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var cell = sheet.getRange('B2:C2');
  cell.setFontStyle('italic');
}

Проверка данных

Apps Script позволяет получить доступ к существующим правилам проверки данных в Google Таблицах или создать новые правила. Например, в следующем примере показано, как установить правило проверки данных, допускающее в ячейке только числа от 1 до 100.

function validateMySpreadsheet() {
  // Set a rule for the cell B4 to be a number between 1 and 100.
  var cell = SpreadsheetApp.getActive().getRange('B4');
  var 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(rule)

Графики

Apps Script позволяет встраивать в электронную таблицу диаграммы, представляющие данные в определенном диапазоне. В следующем примере создается встроенная гистограмма при условии, что в ячейках A1:B15 есть данные, которые можно представить в виде диаграммы:

function newChart() {
  // Generate a chart representing the data in the range of A1:B15.
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];

  var 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 Таблиц. В отличие от пользовательских функций, вы активируете их с помощью сочетания клавиш или через меню Google Таблиц. Дополнительную информацию см. в разделе Макросы Google Таблиц .

Дополнения для Google Таблиц

Дополнения — это специально упакованные проекты Apps Script, которые запускаются внутри Google Sheets и могут быть установлены из магазина дополнений Google Sheets. Если вы разработали сценарий для Google Таблиц и хотите поделиться им со всем миром, Apps Script позволяет опубликовать его как надстройку, чтобы другие пользователи могли установить его из магазина дополнений.

Триггеры

Скрипты, привязанные к файлу Google Sheets, могут использовать простые триггеры , такие как функции onOpen() и onEdit() для автоматического реагирования, когда пользователь, имеющий доступ к редактированию электронной таблицы, открывает или редактирует ее.

Как и простые триггеры, устанавливаемые триггеры позволяют Google Sheets автоматически запускать функцию при возникновении определенного события. Однако устанавливаемые триггеры обеспечивают большую гибкость, чем простые триггеры, и поддерживают следующие события: открытие, редактирование, изменение, отправка формы и управление по времени (часы).