Class ScriptApp

ScriptApp

スクリプトの公開とトリガーにアクセスして操作します。このクラスを使用すると、スクリプト トリガーを作成し、スクリプトをサービスとして公開する操作を制御できます。

プロパティ

プロパティタイプ説明
AuthModeAuthModeトリガーされた関数を介して Apps Script が実行できる承認済みサービスのカテゴリを識別する列挙型。
AuthorizationStatusAuthorizationStatusスクリプトの承認ステータスを示す列挙型。
EventTypeEventTypeトリガーされたイベントのタイプを示す列挙型。
InstallationSourceInstallationSourceスクリプトがアドオンとしてユーザーにインストールされた方法を示す列挙型。
TriggerSourceTriggerSourceトリガーを起動するイベントのソースを示す列挙型。
WeekDayWeekday曜日を表す列挙型。

メソッド

メソッド戻り値の型概要
deleteTrigger(trigger)void指定されたトリガーを削除して、実行されないようにします。
getAuthorizationInfo(authMode)AuthorizationInfoユーザーがすべてのスクリプト要件に対する承認を付与しているかどうかを確認するオブジェクトを取得します。
getAuthorizationInfo(authMode, oAuthScopes)AuthorizationInfoリクエストされたスコープに対する承認をユーザーが付与しているかどうかを確認するオブジェクトを取得します。
getIdentityToken()Stringopenid スコープが付与されている場合、有効なユーザーの OpenID Connect ID トークンを取得します。
getInstallationSource()InstallationSourceスクリプトが現在のユーザーのアドオンとしてインストールされた方法を示す列挙型値を返します(たとえば、ユーザーが Chrome ウェブストアから個人でインストールしたか、ドメイン管理者がすべてのユーザーにインストールしたかなど)。
getOAuthToken()String有効なユーザーの OAuth 2.0 アクセス トークンを取得します。
getProjectTriggers()Trigger[]現在のプロジェクトと現在のユーザーに関連付けられているインストール可能なトリガーをすべて取得します。
getScriptId()Stringスクリプト プロジェクトの一意の ID を取得します。
getService()Serviceスクリプトをウェブアプリとして公開する制御に使用されるオブジェクトを取得します。
getUserTriggers(document)Trigger[]このユーザーが所有する、指定されたドキュメント内のこのスクリプトまたはアドオンのインストール可能なトリガーをすべて取得します。
getUserTriggers(form)Trigger[]このユーザーが所有する、指定されたフォームのインストール可能なトリガーを、このスクリプトまたはアドオンに対してのみ取得します。
getUserTriggers(spreadsheet)Trigger[]このユーザーが所有する、指定されたスプレッドシートのインストール可能なすべてのトリガーを、このスクリプトまたはアドオンに対してのみ取得します。
invalidateAuth()void有効なユーザーが現在のスクリプトを実行する権限を無効にします。
newStateToken()StateTokenBuilderコールバック API(OAuth フローなど)で使用できる状態トークンのビルダーを作成します。
newTrigger(functionName)TriggerBuilderインストール可能なトリガーを作成するプロセスを開始します。このトリガーが起動すると、指定された関数が呼び出されます。
requireAllScopes(authMode)voidユーザーがスクリプトでリクエストされたすべてのスコープに同意しているかどうかを検証します。
requireScopes(authMode, oAuthScopes)voidユーザーがリクエストされたスコープに同意しているかどうかを検証します。

詳細なドキュメント

deleteTrigger(trigger)

指定されたトリガーを削除し、実行されないようにします。

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

パラメータ

名前説明
triggerTrigger削除するトリガー。

承認

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

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

getAuthorizationInfo(authMode)

ユーザーがすべてのスクリプト要件に対する承認を付与しているかどうかを確認するオブジェクトを取得します。また、スクリプトの要件が承認されていない場合に、ユーザーがこれらの権限を付与するための承認 URL も提供します。

スクリプトで使用されるすべての必須スコープについてユーザーの同意を得ることなく、一部のスクリプト実行を開始できます。このオブジェクトの情報を使用すると、特定のスコープを必要とするコードのセクションへのアクセスを制御し、後続の実行のためにそれらのスコープの承認をリクエストできます。

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

パラメータ

名前説明
authModeAuthMode認可情報の要求対象となる認可モード。他の認可モードではユーザーが認可を付与する必要がないため、ほとんどの場合、authMode の値は ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL) になります。

戻る

AuthorizationInfo - ユーザーの承認ステータスに関する情報を提供できるオブジェクト。


getAuthorizationInfo(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();

パラメータ

名前説明
authModeAuthMode認可情報の要求対象となる認可モード。他の認可モードではユーザーが認可を付与する必要がないため、ほとんどの場合、authMode の値は ScriptApp.AuthMode.FULL になります。
oAuthScopesString[]認証情報の取得がリクエストされる OAuth スコープ。

戻る

AuthorizationInfo - ユーザーの承認ステータスと、同意が不足している場合の承認 URL に関する情報を提供するオブジェクト。


getIdentityToken()

openid スコープが付与されている場合、有効なユーザーの OpenID Connect ID トークンを取得します。このスコープはデフォルトでは含まれていません。リクエストするには、マニフェスト ファイルに明示的なスコープとして追加する必要があります。スコープ https://www.googleapis.com/auth/userinfo.email または https://www.googleapis.com/auth/userinfo.profile を含めて、トークンで追加のユーザー情報を返します。

返される ID トークンはエンコードされた JSON ウェブトークン(JWT)であり、情報を抽出するにはデコードする必要があります。次の例は、トークンをデコードして、有効なユーザーの Google プロファイル ID を抽出する方法を示しています。

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}`);
返されるフィールド(クレーム)の完全なリストについては、OpenID Connect のドキュメントをご覧ください。

戻る

String - ID トークン(使用可能な場合)。それ以外の場合は null


getInstallationSource()

スクリプトが現在のユーザーのアドオンとしてインストールされた方法を示す列挙型値を返します(たとえば、ユーザーが Chrome ウェブストアから個人でインストールしたか、ドメイン管理者がすべてのユーザーにインストールしたかなど)。

戻る

InstallationSource - インストールのソース。


getOAuthToken()

有効なユーザーの OAuth 2.0 アクセス トークンを取得します。スクリプトの OAuth スコープが、通常は独自の OAuth フロー(Google Picker など)を必要とする別の Google API を承認するのに十分な場合、スクリプトはこのトークンを渡すことで、2 回目の承認プロンプトをバイパスできます。トークンは一定時間(少なくとも数分)後に期限切れになります。スクリプトは認証の失敗を処理し、必要に応じてこのメソッドを呼び出して新しいトークンを取得する必要があります。

このメソッドから返されるトークンには、スクリプトが現在必要とするスコープのみが含まれます。以前に承認されたものの、スクリプトで使用されなくなったスコープは、返されるトークンに含まれません。スクリプト自体が必要とするもの以外に OAuth スコープが必要な場合は、スクリプトのマニフェスト ファイルで指定できます。

戻る

String - OAuth 2.0 トークンの文字列形式。


getProjectTriggers()

現在のプロジェクトと現在のユーザーに関連付けられているインストール可能なトリガーをすべて取得します。

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

戻る

Trigger[] - このプロジェクトに関連付けられている現在のユーザーのトリガーの配列。

承認

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

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

getScriptId()

スクリプト プロジェクトの一意の ID を取得します。これは、getProjectKey() とは異なり、スクリプト プロジェクトの一意の識別子を取得する推奨の方法です。この ID は、以前にプロジェクト キーが提供されていたすべての場所で使用できます。

戻る

String - スクリプト プロジェクトの ID。


getService()

スクリプトをウェブアプリとして公開する際に使用するオブジェクトを取得します。

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

戻る

Service - スクリプトをウェブアプリとして公開する処理を監視および制御するために使用されるオブジェクト。


getUserTriggers(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());

パラメータ

名前説明
documentDocumentインストール可能なトリガーが含まれている可能性がある Google ドキュメント ファイル。

戻る

Trigger[] - 指定されたドキュメントでこのユーザーが所有するトリガーの配列。

承認

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

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

getUserTriggers(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());

パラメータ

名前説明
formFormインストール可能なトリガーが含まれている可能性がある Google フォーム ファイル。

戻る

Trigger[] - 指定されたフォームでこのユーザーが所有するトリガーの配列。

承認

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

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

getUserTriggers(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());

パラメータ

名前説明
spreadsheetSpreadsheetインストール可能なトリガーが含まれている可能性のある Google スプレッドシート ファイル。

戻る

Trigger[] - 指定されたスプレッドシートでこのユーザーが所有するトリガーの配列。

承認

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

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

invalidateAuth()

有効なユーザーが現在のスクリプトを実行する権限を無効にします。現在のスクリプトの権限を無効にするために使用されます。これは、1 回限りの認証としてタグ付けされた関数に特に便利です。ワンショット承認関数は、スクリプトが承認を取得した後の初回実行時にのみ呼び出すことができるため、その後もアクションを実行する場合は、スクリプトが持っていた承認を取り消して、ユーザーに承認ダイアログを再度表示する必要があります。

ScriptApp.invalidateAuth();

例外

Error - 無効化が失敗した場合


newStateToken()

コールバック 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 の一部として渡します。

次に例を示します。

  • スクリプトはユーザーを OAuth2 認証 URL(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 )にリダイレクトします。
  • ユーザーが [Authorize] をクリックすると、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 に送信され、StateTokenBuilder.withMethod(method) で指定されたメソッドが呼び出されます。

戻る

StateTokenBuilder - 状態トークンの構築プロセスを続行するために使用されるオブジェクト。


newTrigger(functionName)

インストール可能なトリガーを作成するプロセスを開始します。このトリガーが起動すると、指定された関数が呼び出されます。

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

トリガーを作成する前に、関連付けられた関数に必要な OAuth 権限がすべて付与されていることを確認します。

パラメータ

名前説明
functionNameStringトリガーが起動したときに呼び出す関数。Library.libFunction1 などの、含まれているライブラリの関数を使用できます。

戻る

TriggerBuilder - トリガーの作成プロセスを続行するために使用されるオブジェクト。

承認

このメソッドを使用するスクリプトには、次の 1 つ以上のスコープによる承認が必要です。

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

requireAllScopes(authMode)

ユーザーがスクリプトでリクエストされたすべてのスコープに同意しているかどうかを検証します。実行フローがスクリプトがリクエストするすべてのスコープに依存している場合は、このメソッドを使用します。同意が不足している場合、このメソッドは現在の実行を終了し、不足している同意をリクエストする承認プロンプトを表示します。

このメソッドは、ユーザーが Apps Script IDE 内など、きめ細かい同意をサポートするサーフェスからスクリプトを実行した場合にのみ機能します。Google Workspace アドオンなどのサポートされていないサーフェスで同意が不足している状態でスクリプトを実行すると、スクリプトは実行の開始時に認証プロンプトを表示して、すべてのスコープをリクエストします。

ScriptApp.requireAllScopes(ScriptApp.AuthMode.FULL);

パラメータ

名前説明
authModeAuthModeスクリプト スコープを評価する必要がある認可モード。ほとんどの場合、authMode の値は ScriptApp.AuthMode.FULL になります。他の認可モードでは、ユーザーが認可を付与する必要がないためです。

requireScopes(authMode, oAuthScopes)

ユーザーがリクエストされたスコープへの同意を付与しているかどうかを検証します。実行フローが 1 つ以上のサービスに依存している場合は、この方法を使用します。指定された同意のいずれかが欠落している場合、このメソッドは現在の実行を終了し、欠落している同意をリクエストする承認プロンプトを表示します。無効なスコープや、スクリプトで必要とされないスコープはエラーになります。

このメソッドは、ユーザーが Apps Script IDE 内など、きめ細かい同意をサポートするサーフェスからスクリプトを実行した場合にのみ機能します。Google Workspace アドオンなどのサポートされていないサーフェスで同意が不足している状態でスクリプトを実行すると、スクリプトは実行の開始時に認証プロンプトを表示して、すべてのスコープをリクエストします。

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

パラメータ

名前説明
authModeAuthModeリクエストされたスコープを評価する必要がある認可モード。他の認可モードではユーザーが認可を付与する必要がないため、ほとんどの場合、authMode の値は ScriptApp.AuthMode.FULL になります。
oAuthScopesString[]指定された実行フローを完了するために必要な OAuth スコープ。

サポート終了のメソッド