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

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

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

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

Начать

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

Служба электронных таблиц рассматривает Google Sheets как сетку, работающую с двумерными массивами. Чтобы извлечь данные из электронной таблицы, вы должны получить доступ к электронной таблице, в которой хранятся данные, получить диапазон в электронной таблице, в которой хранятся данные, а затем получить значения ячеек. 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 Таблиц.

Подключение к гугл формам

Apps Script позволяет подключать Google Forms к Google Sheets через сервисы Forms и Spreadsheet . Эта функция может автоматически создавать форму Google на основе данных в электронной таблице. Apps Script также позволяет использовать триггеры , такие как onFormSubmit для выполнения определенного действия после того, как пользователь ответит на форму. Чтобы узнать больше о подключении Google Sheets к 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 Sheets или создать новые правила. Например, в следующем образце показано, как установить правило проверки данных, разрешающее в ячейке только числа от 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 Sheets

Пользовательская функция аналогична встроенной функции электронной таблицы, такой как =SUM(A1:A5) за исключением того, что вы определяете поведение функции с помощью скрипта приложений. Например, вы можете создать пользовательскую функцию in2mm() , которая преобразует значение из дюймов в миллиметры, а затем использовать формулу в электронной таблице, введя в ячейку =in2mm(A1) или =in2mm(10) .

Чтобы узнать больше о пользовательских функциях, ознакомьтесь с 5-минутным кратким руководством по меню и пользовательским функциям или ознакомьтесь с более подробным руководством по пользовательским функциям .

Макросы

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

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

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

Триггеры

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

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