Class ScriptApp

ScriptApp

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

プロパティ

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

Methods

メソッド戻り値の型概要
deleteTrigger(trigger)void指定されたトリガーを削除して、実行しないようにします。
getAuthorizationInfo(authMode)AuthorizationInfoこのスクリプトが 1 つ以上のサービスを使用するのを承認する必要があるかどうかを判別し、承認ダイアログの 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.
var triggers = ScriptApp.getProjectTriggers();
for (var 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 を抽出する方法を示しています。

var idToken = ScriptApp.getIdentityToken();
var body = idToken.split('.')[1];
var decoded = Utilities.newBlob(Utilities.base64Decode(body)).getDataAsString();
var payload = JSON.parse(decoded);
var profileId = payload.sub;
Logger.log('Profile ID: ' + profileId);
返されるフィールド(クレーム)の完全なリストについては、OpenID Connect のドキュメントをご覧ください。

リターン

String - ID トークン(存在する場合)。それ以外の場合は null


getInstallationSource()

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

リターン

InstallationSource - インストール元。


getOAuthToken()

有効なユーザーの OAuth 2.0 アクセス トークンを取得します。スクリプトの OAuth スコープで、通常は独自の OAuth フローを必要とする別の Google API(Google Picker など)を承認するには十分な場合、スクリプトはこのトークンを代わりに渡すことで、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.
var url = ScriptApp.getService().getUrl();

リターン

Service - スクリプトをウェブアプリとして公開する監視と制御に使用するオブジェクト。


getUserTriggers(document)

このスクリプトまたはアドオンでのみ、指定されたドキュメントでこのユーザーが所有するインストール可能なトリガーをすべて取得します。この方法を使用して、他のスクリプトに適用されているトリガーを表示することはできません。

var doc = DocumentApp.getActiveDocument();
var 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)

このスクリプトまたはアドオンでのみ、指定されたフォームでこのユーザーが所有するインストール可能なトリガーをすべて取得します。この方法を使用して、他のスクリプトに適用されているトリガーを表示することはできません。

var form = FormApp.getActiveForm();
var 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)

このスクリプトまたはアドオンでのみ、指定されたスプレッドシートでこのユーザーが所有するすべてのインストール可能なトリガーを取得します。この方法を使用して、他のスクリプトに適用されているトリガーを表示することはできません。

var ss = SpreadsheetApp.getActiveSpreadsheet();
var 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.
  var scriptUrl = 'https://script.google.com/macros/d/1234567890abcdefghijklmonpqrstuvwxyz';
  var urlSuffix = '/usercallback?state=';
  var 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

サポート終了のメソッド