Class ScriptApp

Приложение-скрипт

Доступ к публикации скриптов и триггерам, а также управление ими. Этот класс позволяет пользователям создавать триггеры скриптов и управлять публикацией скриптов как службой.

Характеристики

Свойство Тип Описание
Auth Mode Auth Mode Перечисление, которое определяет, какие категории авторизованных служб Apps Script может выполнять посредством вызванной функции.
Authorization Status Authorization Status Перечисление, обозначающее статус авторизации скрипта.
Event Type Event Type Перечисление, обозначающее тип произошедшего события.
Installation Source Installation Source Перечисление, обозначающее способ установки скрипта пользователю в качестве дополнения.
Trigger Source Trigger Source Перечисление, обозначающее источник события, вызывающего срабатывание триггера.
Week Day Weekday Перечисление, представляющее дни недели.

Методы

Метод Тип возврата Краткое описание
delete Trigger(trigger) void Удаляет указанный триггер, после чего он больше не выполняется.
get Authorization Info(authMode) Authorization Info Получает объект, который проверяет, предоставил ли пользователь разрешение на все требования скрипта.
get Authorization Info(authMode, oAuthScopes) Authorization Info Получает объект, который проверяет, предоставил ли пользователь разрешение на запрошенные области.
get Identity Token() String Получает токен идентификации Open ID Connect для эффективного пользователя, если была предоставлена область действия openid .
get Installation Source() Installation Source Возвращает значение перечисления, указывающее, как скрипт был установлен в качестве надстройки для текущего пользователя (например, установил ли пользователь его лично через Chrome Web Store или администратор домена установил его для всех пользователей).
get OAuth Token() String Получает токен доступа OAuth 2.0 для эффективного пользователя.
get Project Triggers() Trigger[] Получает все устанавливаемые триггеры, связанные с текущим проектом и текущим пользователем.
get Script Id() String Получает уникальный идентификатор проекта скрипта.
get Service() Service Получает объект, используемый для управления публикацией скрипта как веб-приложения.
get User Triggers(document) Trigger[] Получает все устанавливаемые триггеры, принадлежащие этому пользователю в указанном документе, только для этого скрипта или надстройки.
get User Triggers(form) Trigger[] Получает все устанавливаемые триггеры, принадлежащие этому пользователю в заданной форме, только для этого скрипта или дополнения.
get User Triggers(spreadsheet) Trigger[] Получает все устанавливаемые триггеры, принадлежащие этому пользователю в указанной электронной таблице, только для этого скрипта или надстройки.
invalidate Auth() void Аннулирует разрешение эффективного пользователя на выполнение текущего скрипта.
new State Token() State Token Builder Создает конструктор для токена состояния, который можно использовать в API обратного вызова (например, поток OAuth).
new Trigger(functionName) Trigger Builder Начинает процесс создания устанавливаемого триггера, который при срабатывании вызывает заданную функцию.
require All Scopes(authMode) void Проверяет, дал ли пользователь согласие на все области, запрошенные скриптом.
require Scopes(authMode, oAuthScopes) void Проверяет, дал ли пользователь согласие на запрошенные области действия.

Подробная документация

delete Trigger(trigger)

Удаляет указанный триггер, после чего он больше не выполняется.

// Deletes all triggers in the current project.
const triggers = ScriptApp.getProjectTriggers();
for (let i = 0; i < triggers.length; i++) {
  ScriptApp.deleteTrigger(triggers[i]);
}

Параметры

Имя Тип Описание
trigger Trigger Триггер для удаления.

Авторизация

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

  • https://www.googleapis.com/auth/script.scriptapp

get Authorization Info(authMode)

Получает объект, проверяющий, предоставил ли пользователь разрешение на выполнение всех требований скрипта. Объект также предоставляет URL-адрес авторизации, позволяющий пользователям предоставить эти разрешения, если какое-либо из требований скрипта не разрешено.

Некоторые сценарии могут выполняться без согласия пользователя для всех необходимых областей, используемых сценарием. Информация в этом объекте позволяет контролировать доступ к разделам кода, требующим определённых областей, и запрашивать разрешение на их использование для последующих запусков.

const authInfo = ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL);
const status = authInfo.getAuthorizationStatus();
const url = authInfo.getAuthorizationUrl();

Параметры

Имя Тип Описание
auth Mode Auth Mode Режим авторизации, для которого запрашивается информация об авторизации; почти во всех случаях значение для auth Mode должно быть Script App.getAuthorizationInfo(ScriptApp.AuthMode.FULL) , поскольку никакой другой режим авторизации не требует, чтобы пользователи предоставляли авторизацию.

Возвращаться

Authorization Info — объект, который может предоставить информацию о статусе авторизации пользователя.


get Authorization Info(authMode, oAuthScopes)

Получает объект, проверяющий, предоставил ли пользователь разрешение на запрошенные области. Объект также предоставляет URL-адрес авторизации, позволяющий пользователям предоставить эти разрешения, если какие-либо из запрошенных областей не авторизованы.

Некоторые сценарии могут запускаться без согласия пользователя для всех требуемых областей действия, используемых сценарием. Информация в этом объекте позволяет контролировать доступ к разделам кода, требующим определённых областей действия, и запрашивать разрешение на их использование для последующего выполнения. Недопустимые или не требуемые сценарием области действия приводят к ошибке.

const authInfo = ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL, [
  'https://www.googleapis.com/auth/documents',
  'https://www.googleapis.com/auth/presentations',
]);
const status = authInfo.getAuthorizationStatus();
const url = authInfo.getAuthorizationUrl();

Параметры

Имя Тип Описание
auth Mode Auth Mode Режим авторизации, для которого запрашивается информация об авторизации; почти во всех случаях значение параметра auth Mode должно быть Script App.AuthMode.FULL , поскольку никакой другой режим авторизации не требует от пользователей предоставления авторизации.
oAuthScopes String[] Области OAuth, для которых запрашивается информация об авторизации.

Возвращаться

Authorization Info — объект, который предоставляет информацию о статусе авторизации пользователя и URL-адрес авторизации в случае отсутствия некоторых согласий.


get Identity Token()

Получает токен идентификации Open ID Connect для действующего пользователя, если область действия openid предоставлена. Эта область действия не включена по умолчанию, и для её запроса необходимо добавить её как явную область действия в файл манифеста. Включите области действия https://www.googleapis.com/auth/userinfo.email или https://www.googleapis.com/auth/userinfo.profile , чтобы получить дополнительную информацию о пользователе в токене.

Возвращаемый идентификатор представляет собой закодированный JSON Web Token (JWT) , который необходимо декодировать для извлечения информации. В следующих примерах показано, как декодировать токен и извлечь эффективный идентификатор профиля Google пользователя.

const idToken = ScriptApp.getIdentityToken();
const body = idToken.split('.')[1];
const decoded = Utilities
                    .newBlob(
                        Utilities.base64Decode(body),
                        )
                    .getDataAsString();
const payload = JSON.parse(decoded);

Logger.log(`Profile ID: ${payload.sub}`);
Полный список возвращаемых полей (заявлений) см. в документации Open ID Connect .

Возвращаться

String — токен идентификации, если доступен; в противном случае null .


get Installation Source()

Возвращает значение перечисления, указывающее, как скрипт был установлен в качестве надстройки для текущего пользователя (например, установил ли пользователь его лично через Chrome Web Store или администратор домена установил его для всех пользователей).

Возвращаться

Installation Source — Источник установки.


get OAuth Token()

Получает токен доступа OAuth 2.0 для действующего пользователя. Если области действия OAuth скрипта достаточны для авторизации другого API Google, которому обычно требуется собственный поток OAuth (например, Google Picker ), скрипты могут обойти второй запрос авторизации, передав этот токен. Срок действия токена истекает через определённое время (минимум несколько минут); скрипты должны обрабатывать ошибки авторизации и вызывать этот метод для получения нового токена при необходимости.

Токен, возвращаемый этим методом, включает только области действия, необходимые скрипту в данный момент. Области действия, которые были ранее авторизованы, но больше не используются скриптом, в возвращаемый токен не включаются. Если требуются дополнительные области действия OAuth, выходящие за рамки требований самого скрипта, их можно указать в файле манифеста скрипта.

Возвращаться

String — строковое представление токена OAuth 2.0.


get Project Triggers()

Получает все устанавливаемые триггеры, связанные с текущим проектом и текущим пользователем.

Logger.log(
    `Current project has ${ScriptApp.getProjectTriggers().length} triggers.`,
);

Возвращаться

Trigger[] — Массив триггеров текущего пользователя, связанных с этим проектом.

Авторизация

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

  • https://www.googleapis.com/auth/script.scriptapp

get Script Id()

Получает уникальный идентификатор проекта скрипта. Это предпочтительный метод получения уникального идентификатора проекта скрипта по сравнению с get Project Key() . Этот идентификатор можно использовать везде, где ранее был указан ключ проекта.

Возвращаться

String — идентификатор проекта скрипта.


get Service()

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

// Get the URL of the published web app.
const url = ScriptApp.getService().getUrl();

Возвращаться

Service — объект, используемый для наблюдения и управления публикацией скрипта как веб-приложения.


get User Triggers(document)

Получает все устанавливаемые триггеры, принадлежащие данному пользователю в указанном документе, только для данного скрипта или дополнения. Этот метод нельзя использовать для просмотра триггеров, прикреплённых к другим скриптам.

const doc = DocumentApp.getActiveDocument();
const triggers = ScriptApp.getUserTriggers(doc);
// Log the handler function for the first trigger in the array.
Logger.log(triggers[0].getHandlerFunction());

Параметры

Имя Тип Описание
document Document Файл Google Docs, который может содержать устанавливаемые триггеры.

Возвращаться

Trigger[] — Массив триггеров, принадлежащих этому пользователю в указанном документе.

Авторизация

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

  • https://www.googleapis.com/auth/script.scriptapp

get User Triggers(form)

Получает все устанавливаемые триггеры, принадлежащие данному пользователю, в указанной форме, только для данного скрипта или дополнения. Этот метод нельзя использовать для просмотра триггеров, прикреплённых к другим скриптам.

const form = FormApp.getActiveForm();
const triggers = ScriptApp.getUserTriggers(form);
// Log the trigger source for the first trigger in the array.
Logger.log(triggers[0].getTriggerSource());

Параметры

Имя Тип Описание
form Form Файл Google Forms, который может содержать устанавливаемые триггеры.

Возвращаться

Trigger[] — Массив триггеров, принадлежащих данному пользователю в заданной форме.

Авторизация

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

  • https://www.googleapis.com/auth/script.scriptapp

get User Triggers(spreadsheet)

Получает все устанавливаемые триггеры, принадлежащие данному пользователю в указанной таблице, только для данного скрипта или дополнения. Этот метод нельзя использовать для просмотра триггеров, прикрепленных к другим скриптам.

const ss = SpreadsheetApp.getActiveSpreadsheet();
const triggers = ScriptApp.getUserTriggers(ss);
// Log the event type for the first trigger in the array.
Logger.log(triggers[0].getEventType());

Параметры

Имя Тип Описание
spreadsheet Spreadsheet Файл Google Таблиц, который может содержать устанавливаемые триггеры.

Возвращаться

Trigger[] — массив триггеров, принадлежащих этому пользователю в данной электронной таблице.

Авторизация

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

  • https://www.googleapis.com/auth/script.scriptapp

invalidate Auth()

Аннулирует авторизацию, предоставленную эффективному пользователю для выполнения текущего скрипта. Используется для аннулирования любых разрешений для текущего скрипта. Это особенно полезно для функций, помеченных как одноразовая авторизация. Поскольку функции одноразовой авторизации могут быть вызваны только при первом запуске после получения скриптом авторизации, если вы хотите выполнить какое-либо действие после этого, необходимо аннулировать все предоставленные скрипту авторизации, чтобы пользователь снова увидел диалоговое окно авторизации.

ScriptApp.invalidateAuth();

Броски

Error — когда аннулирование не удается


new State Token()

Создает конструктор для токена состояния, который можно использовать в API обратного вызова (например, поток OAuth).

// Generate a callback URL, given the name of a callback function. The script
// does not need to be published as a web app; the /usercallback URL suffix
// replaces /edit in any script's URL.
function getCallbackURL(callbackFunction) {
  // IMPORTANT: Replace string below with the URL from your script, minus the
  // /edit at the end.
  const scriptUrl =
      'https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz';
  const urlSuffix = '/usercallback?state=';
  const stateToken = ScriptApp.newStateToken()
                         .withMethod(callbackFunction)
                         .withTimeout(120)
                         .createToken();
  return scriptUrl + urlSuffix + stateToken;
}

В большинстве потоков OAuth2 токен state передается в конечную точку авторизации напрямую (не как часть URL-адреса обратного вызова), а затем конечная точка авторизации передает его как часть URL-адреса обратного вызова.

Например:

  • Скрипт перенаправляет пользователя на URL-адрес авторизации OAuth2: https://accounts.google.com/o/oauth2/auth?state=token_generated_with_this_method&callback_uri=https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz/usercallback&other_oauth2_parameters
  • Пользователь нажимает кнопку «Авторизовать», и страница авторизации OAuth2 перенаправляет пользователя обратно на https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz/usercallback?state=token_generated_with_this_method&other_params_that_include_tokens_or_grants
  • Указанное выше перенаправление (обратно на http://script.google.com/... ) приводит к тому, что браузер отправляет запрос на /usercallback , который вызывает метод, указанный в State Token Builder.withMethod(method) .

Возвращаться

State Token Builder — объект, используемый для продолжения процесса построения токенов состояния.


new Trigger(functionName)

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

// Creates an edit trigger for a spreadsheet identified by ID.
ScriptApp.newTrigger('myFunction')
    .forSpreadsheet('1234567890abcdefghijklmnopqrstuvwxyz_a1b2c3')
    .onEdit()
    .create();

Перед созданием триггера убедитесь, что связанная с ним функция имеет все необходимые разрешения OAuth.

Параметры

Имя Тип Описание
function Name String Функция, вызываемая при срабатывании триггера. Вы можете использовать функции из включённых библиотек, например Library.libFunction1 .

Возвращаться

Trigger Builder — объект, используемый для продолжения процесса построения триггера.

Авторизация

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

  • https://www.googleapis.com/auth/script.scriptapp

require All Scopes(authMode)

Проверяет, предоставил ли пользователь согласие на все области действия, запрошенные скриптом. Используйте этот метод, если поток выполнения зависит от всех областей действия, запрашиваемых скриптом. Если какие-либо согласия отсутствуют, этот метод завершает текущее выполнение и отображает запрос на авторизацию для запроса недостающих согласий.

Этот метод работает только тогда, когда пользователи запускают скрипт из среды, поддерживающей детальное согласие, например, из IDE Apps Script. Если скрипт запускается без согласия из неподдерживаемой среды, например, из надстройки Google Workspace, скрипт выводит запрос на авторизацию в начале выполнения, чтобы запросить все области действия.

ScriptApp.requireAllScopes(ScriptApp.AuthMode.FULL);

Параметры

Имя Тип Описание
auth Mode Auth Mode Режим авторизации, для которого необходимо оценить области действия скрипта, почти во всех случаях значение для auth Mode должно быть Script App.AuthMode.FULL , поскольку никакой другой режим авторизации не требует, чтобы пользователи предоставляли авторизацию.

require Scopes(authMode, oAuthScopes)

Проверяет, предоставил ли пользователь согласие на запрошенные области действия. Используйте этот метод, если поток выполнения зависит от одной или нескольких служб. Если какое-либо из указанных согласий отсутствует, этот метод завершает текущее выполнение и выводит запрос на авторизацию для запроса отсутствующих согласий. Недействительные или не требуемые сценарием области действия приводят к ошибке.

Этот метод работает только тогда, когда пользователи запускают скрипт из среды, поддерживающей детальное согласие, например, из IDE Apps Script. Если скрипт запускается без согласия из неподдерживаемой среды, например, из надстройки Google Workspace, скрипт выводит запрос на авторизацию в начале выполнения, чтобы запросить все области действия.

ScriptApp.requireScopes(ScriptApp.AuthMode.FULL, [
  'https://www.googleapis.com/auth/documents',
  'https://www.googleapis.com/auth/presentations',
]);

Параметры

Имя Тип Описание
auth Mode Auth Mode Режим авторизации, для которого необходимо оценить запрошенные области действия, почти во всех случаях значение для auth Mode должно быть Script App.AuthMode.FULL , поскольку никакой другой режим авторизации не требует, чтобы пользователи предоставляли авторизацию.
oAuthScopes String[] Области OAuth, необходимые для завершения данного потока выполнения.

Устаревшие методы