Class ScriptApp

スクリプトアプリ

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

プロパティ

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

メソッド

メソッド戻り値の型概要
deleteTrigger(trigger)void指定したトリガーを削除して、トリガーが実行されないようにします。
getAuthorizationInfo(authMode)AuthorizationInfo1 つ以上のサービスを使用するためにユーザーがこのスクリプトを承認する必要があるかどうかを判断し、承認ダイアログの URL を提供するのに使用されるオブジェクトを取得します。
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トリガーが発生したときに特定の関数を呼び出す、インストール可能なトリガーの作成プロセスを開始します。

詳細なドキュメント

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)

1 つ以上のサービスを使用するためにユーザーがこのスクリプトを承認する必要があるかどうかを判断し、承認ダイアログの URL を提供するのに使用されるオブジェクトを取得します。スクリプトがインストール可能なトリガーを使用するアドオンとして公開されている場合、この情報を使用して、ユーザーに必要な認可がないコードのセクションへのアクセスを制御できます。または、アドオンで、問題を解決するために認証ダイアログの URL を開くようユーザーに求めることもあります。

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

パラメータ

名前説明
authModeAuthMode認可情報がリクエストされる認可モード。他の認可モードではユーザーによる認可が不要であるため、ほとんどの場合、authMode の値は ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL) にする必要があります。

戻る

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


getIdentityToken()

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

返された ID トークンはエンコードされた JSON Web Token(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()

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

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 )にリダイレクトします。
  • ユーザーが [承認] をクリックすると、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();

パラメータ

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

戻る

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

承認

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

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

サポート終了のメソッド