Расширение Документов Google

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

Основы

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

В любом случае взаимодействовать с документом Google через службу документов Apps Script просто, как показано в следующем примере.

function createDoc() {
  var doc = DocumentApp.create('Sample Document');
  var body = doc.getBody();
  var rowsData = [['Plants', 'Animals'], ['Ficus', 'Goat'], ['Basil', 'Cat'], ['Moss', 'Frog']];
  body.insertParagraph(0, doc.getName())
      .setHeading(DocumentApp.ParagraphHeading.HEADING1);
  table = body.appendTable(rowsData);
  table.getRow(0).editAsText().setBold(true);
}

Приведенный выше сценарий создает новый документ на Google Диске пользователя, затем вставляет абзац, содержащий тот же текст, что и название документа, оформляет этот абзац как заголовок и добавляет таблицу на основе значений в двумерном массиве. Сценарий может так же легко внести эти изменения в существующий документ, заменив вызов DocumentApp.create() на DocumentApp.openById() или openByUrl() . Для сценариев, созданных внутри документа (привязанного к контейнеру), используйте DocumentApp.getActiveDocument() .

Структура документа

С точки зрения Apps Script Google Doc структурирован так же, как документ HTML, то есть Google Doc состоит из элементов (таких как Paragraph или Table ), которые часто содержат другие элементы. Большинство скриптов, изменяющих Google Doc, начинаются с вызова getBody() , потому что Body — это главный элемент, содержащий все остальные элементы, кроме HeaderSection , FooterSection и любых Footnotes .

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

Элементы, выделенные жирным шрифтом, могут быть вставлены; элементы, не выделенные жирным шрифтом, можно манипулировать только на месте.

Замена текста

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

Есть много способов заменить текст, но самым простым является метод replaceText() , показанный в примере ниже. replaceText поддерживает большинство функций регулярных выражений JavaScript. Первая функция ниже добавляет несколько строк текста-заполнителя в Документы Google; в реальном мире вы, скорее всего, сами введете заполнители в документ. Вторая функция заменяет заполнители свойствами, определенными в client объекте.

Обратите внимание, что обе эти функции используют метод getActiveDocument() , который применяется только к сценариям, созданным внутри Документа Google; в автономном скрипте вместо этого используйте DocumentApp.create() , openById() или openByUrl() .

Добавьте несколько заполнителей

function createPlaceholders() {
  var body = DocumentApp.getActiveDocument().getBody();
  body.appendParagraph('{name}');
  body.appendParagraph('{address}');
  body.appendParagraph('{city} {state} {zip}');
}

Замените заполнители

function searchAndReplace() {
  var body = DocumentApp.getActiveDocument()
      .getBody();
  var client = {
    name: 'Joe Script-Guru',
    address: '100 Script Rd',
    city: 'Scriptville',
    state: 'GA',
    zip: 94043
  };

  body.replaceText('{name}', client.name);
  body.replaceText('{address}', client.address);
  body.replaceText('{city}', client.city);
  body.replaceText('{state}', client.state);
  body.replaceText('{zip}', client.zip);
}

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

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

Узнайте, как добавить настраиваемые меню и диалоговые окна в ваши Документы Google. Чтобы узнать больше о создании настраиваемых интерфейсов для диалогового окна или боковой панели, см. руководство по HTML-сервису . Если вы планируете опубликовать свой собственный интерфейс как часть надстройки , следуйте руководству по стилю , чтобы оно соответствовало стилю и макету редактора Документов Google.

Дополнения для Google Документов

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

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

Триггеры

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

Чтобы настроить триггер, просто напишите функцию onOpen() . Пример этого триггера см. в разделе Пользовательские меню в Google Workspace . Хотя простой триггер полезен для добавления меню, он не может использовать какие-либо службы сценариев приложений, требующие авторизации.