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. Например:
- Если ввести полное имя глобального объекта или выбрать его из автозаполнения, а затем нажать
.
(точка), вы увидите все методы и перечисления для этого класса. - Если вы введете несколько символов, вы увидите все допустимые предложения, начинающиеся с этих символов.
Понимание глобальных объектов
Каждый сервис предоставляет как минимум один глобальный объект (верхнего уровня); например, доступ к сервису Gmail осуществляется исключительно через объект GmailApp
. Некоторые сервисы предоставляют несколько глобальных объектов; например, сервис Base включает четыре глобальных объекта: Browser
, Logger
, MimeType
и Session
.
Вызов методов
Глобальные объекты практически всех встроенных или расширенных служб включают методы, возвращающие данные, или класс Apps Script. Скрипты выполняют вызовы методов в следующем формате:
GlobalObjectName.methodName(argument1, argument2, ..., argumentN);
Например, скрипт может отправить электронное письмо, вызвав метод sendEmail(recipient, subject, body)
службы Gmail следующим образом:
GmailApp.sendEmail('[email protected]', '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
; доступ к дочернему классу возможен только через вызов метода, который его возвращает. Если вы не уверены, как получить доступ к определённому классу, посетите корневую страницу справочной документации сервиса и найдите метод, возвращающий нужный вам класс.
Работа с интерфейсами
Некоторые сервисы включают специальные классы, которые в справочной документации обозначены как «интерфейсы». Это универсальные классы, используемые в качестве возвращаемых типов для методов, которые не могут определить точный тип заранее; например, метод Body.getChild(childIndex)
сервиса Document возвращает универсальный объект Element
. Element
— это интерфейс, представляющий другой класс, возможно, Paragraph
или Table
. Объекты интерфейсов редко бывают полезны сами по себе; вместо этого обычно требуется вызвать метод, например, Element.asParagraph()
чтобы привести объект к точному классу.
Работа с перечислениями
Большинство сервисов включают несколько перечислений (перечислимых типов) именованных значений. Например, сервис «Диск» использует перечисления Access
и Permission
для определения пользователей, имеющих доступ к файлу или папке. Практически во всех случаях доступ к этим перечислениям осуществляется из глобального объекта. Например, вызов метода Folder.setSharing(accessType, permissionType)
выглядит следующим образом:
// 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);