Google Apps Script предоставляет более 30 встроенных сервисов для взаимодействия с пользовательскими данными, другими системами Google и внешними системами. Эти сервисы предоставляются в виде глобальных объектов, аналогичных стандартному объекту Math в JavaScript. Например, подобно тому, как Math предлагает методы, такие как random() и константы, такие как PI , сервис Spreadsheet в Apps Script предлагает методы, такие как openById(id) , классы (дочерние объекты), такие как Range , и перечисления, такие как DataValidationCriteria .
Справочная документация по сервисам, управляющим продуктами Google Workspace, собрана в разделе «Сервисы Google Workspace» в заголовке «Справочник» на боковой панели этого сайта. Вспомогательные сервисы (для таких задач, как создание пользовательских интерфейсов, анализ XML или запись данных журналов) собраны в разделе «Скриптовые сервисы».
Современные возможности JavaScript
Apps Script поддерживает две среды выполнения JavaScript: современную среду выполнения V8 и более старую, работающую на основе интерпретатора JavaScript Rhino от Mozilla.
Среда выполнения V8 поддерживает современный синтаксис и возможности ECMAScript . Среда выполнения Rhino основана на более старом стандарте JavaScript 1.6 , а также включает в себя некоторые функции из версий 1.7 и 1.8 . Выберите, какую среду выполнения использовать для своего скрипта, но настоятельно рекомендуется использовать среду выполнения V8.
Каждая среда выполнения поддерживает классы и объекты JavaScript, доступные вашему скрипту в дополнение к встроенным и расширенным сервисам Google . Ваши скрипты могут использовать распространенные объекты, такие как Array , Date , RegExp и так далее , а также глобальные объекты Math и Object .
Поскольку код Apps Script выполняется на серверах Google (за исключением страниц HTML-сервисов ), такие функции JavaScript, доступные в браузере, как манипулирование DOM или Window API, в Apps Script недоступны.
Автозаполнение
Редактор скриптов предоставляет функцию «подсказок по содержимому», чаще называемую «автозаполнением», которая отображает глобальные объекты, а также методы и перечисления, допустимые в текущем контексте скрипта. Подсказки автозаполнения появляются автоматически всякий раз, когда вы вводите точку после вызова глобального объекта, перечисления или метода, возвращающего класс Apps Script. Например:
- Если вы введете полное имя глобального объекта или выберете его из автозаполнения, а затем
.точку (.), вы увидите все методы и перечисления для этого класса. - Если вы введете несколько символов, вы увидите все допустимые варианты, начинающиеся с этих символов.
Глобальные объекты
Каждая служба предоставляет как минимум один глобальный (верхнеуровневый) объект; например, доступ к службе Gmail осуществляется исключительно через объект GmailApp . Некоторые службы предоставляют несколько глобальных объектов; например, служба Base включает четыре глобальных объекта: Browser , Logger , MimeType и Session .
Методы
Глобальные объекты практически всех встроенных или расширенных сервисов включают методы, возвращающие данные или класс Apps Script. Скрипты вызывают методы в следующем формате:
GlobalObjectName.methodName(argument1, argument2, ..., argumentN);
Например, скрипт может отправить электронное письмо, вызвав метод sendEmail(recipient, subject, body) сервиса Gmail следующим образом:
GmailApp.sendEmail('claire@example.com', 'Subject line', 'This is the body.');
Если метод возвращает другой класс Apps Script, вызовы методов следует объединять в одну строку. (Типы возвращаемых значений отображаются как в автозаполнении, так и в справочной документации метода.) Например, метод DocumentApp.create() возвращает Document ; таким образом, следующие два фрагмента кода эквивалентны:
var doc = DocumentApp.create('New document');
var body = doc.getTab('t.0').asDocumentTab().getBody();
body.appendParagraph('New paragraph.');
// Same result as above.
DocumentApp.create('New document').getTab('t.0').asDocumentTab().getBody()
.appendParagraph('New paragraph.');
Детские классы
Каждый сервис включает один или несколько дочерних классов, к которым нельзя получить доступ с верхнего уровня как к глобальному объекту. Также нельзя использовать ключевое слово new для создания этих классов, как это делается со стандартными классами JavaScript, такими как Date . Для доступа к дочернему классу необходимо вызвать метод, который его возвращает. Если вы не уверены, как получить доступ к определенному классу, посетите корневую страницу справочной документации сервиса — там перечислены классы сервиса и методы, которые их возвращают.
Интерфейсы
Некоторые сервисы содержат классы, обозначенные в справочной документации как «интерфейсы». Это обобщенные классы, используемые в качестве возвращаемых типов для методов, которые не могут заранее определить точный тип. Например, метод сервиса Document Body.getChild(childIndex) возвращает обобщенный объект Element . Интерфейс Element представляет собой какой-либо другой класс, возможно, Paragraph или Table . Объекты интерфейса редко бывают полезны сами по себе; вместо этого вызовите метод, например Element.asParagraph() , чтобы привести объект обратно к определенному классу.
Перечисления
Большинство сервисов включают перечисления (перечисляемые типы) с именованными значениями. Например, сервис Google Drive использует перечисления Access и Permission для определения того, какие пользователи имеют доступ к файлу или папке. В большинстве случаев доступ к этим перечислениям осуществляется через глобальный объект, как показано в следующем примере:
// Creates a folder that anyone on the Internet can read from and write to.
// (Domain administrators can prohibit this setting for Google Workspace users.)
var folder = DriveApp.createFolder('Shared Folder');
folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);