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|null Получает токен идентификации 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 .

Возвращаемый токен ID представляет собой закодированный 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 — Идентификационный токен, если он доступен; в противном случае null .


get Installation Source()

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

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

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


get OAuth Token()

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

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

Этот метод можно использовать для вызова API Google, которые Apps Script напрямую не поддерживает. Передайте возвращенный токен в заголовке `Authorization` HTTP-запроса, используя Url Fetch App.fetch(url, params) .

const url = 'https://www.googleapis.com/drive/v3/files';
const method = 'GET';
const headers = {
  Authorization: 'Bearer ' + ScriptApp.getOAuthToken(),
};
const response = UrlFetchApp.fetch(url, {
  method,
  headers,
});

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

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)

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

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

ScriptApp.requireAllScopes(ScriptApp.AuthMode.FULL);

Параметры

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

require Scopes(authMode, oAuthScopes)

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

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

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