スコープ

ユーザーは、自身のデータにアクセスしたり、ユーザーに代わって操作したりするアドオンや他のアプリを承認する必要があります。ユーザーがアドオンを初めて実行すると、アドオンの UI に承認フローを開始するための承認プロンプトが表示されます。

このフローでは、アプリがどのような権限を必要としているかがプロンプトに表示されます。たとえば、アドオンがユーザーのメール メッセージを読み取る権限や、カレンダーに予定を作成する権限を必要とする場合があります。アドオンのスクリプト プロジェクトでは、これらの個々の権限が OAuth スコープとして定義されます。

URL 文字列を使用して、マニフェストでスコープを宣言します。承認フローでは、Apps Script はスコープの説明を人間が読める形式でユーザーに提示します。たとえば、Google Workspace アドオンで「現在のメッセージの読み取り」スコープを使用する場合、マニフェストには https://www.googleapis.com/auth/gmail.addons.current.message.readonly と記述します。承認フローでは、このスコープを持つアドオンが、アドオンの実行時にメール メッセージを表示する ことを許可するようユーザーに求めます。

Apps Script がさまざまなサービスで使用するスコープは、関連する API で使用されるスコープと重複しています。たとえば、Apps Script の カレンダー サービスでは、 Calendar API と同じスコープが多数使用されています。特定の Apps Script サービス メソッドに必要なスコープは、Apps Script リファレンス ドキュメントで確認できます。

表示スコープ

スクリプト プロジェクトで現在必要なスコープは、次の手順で確認できます。

  1. スクリプト プロジェクトを開きます。
  2. 左側の [概要] をクリックします。
  3. [プロジェクトの OAuth スコープ] でスコープを確認します。

スクリプト プロジェクトの現在のスコープは、プロジェクト マニフェストの oauthScopesフィールドでも確認できますが、これらのスコープを明示的に設定している場合に限ります。

明示的なスコープを設定する

Apps Script は、必要な関数呼び出しのコードをスキャンして、スクリプトに必要なスコープを自動的に判断します。ほとんどのスクリプトではこれで十分であり、時間を節約できますが、公開されたアドオンでは、スコープをより直接的に制御する必要があります。

たとえば、Apps Script では、アドオン スクリプト プロジェクトに非常に緩いスコープ https://mail.google.com がデフォルトで付与されることがあります。ユーザーがこのスコープを持つスクリプト プロジェクトを承認すると、プロジェクトにはユーザーの Gmail アカウントへの完全なアクセス権が付与されます。公開されたアドオンの場合は、このスコープを、アドオンのニーズを過不足なくカバーする、より限定的なセットに置き換える必要があります

スクリプト プロジェクトで使用するスコープは、 編集してマニフェスト ファイルで明示的に設定できます。マニフェスト フィールド oauthScopesは、アドオンで使用されるすべてのスコープの配列です。プロジェクトのスコープを設定する手順は次のとおりです。

  1. アドオンで使用するスコープを確認します。 より狭いスコープを使用するなど、必要な変更を判断します。
  2. アドオンのマニフェスト ファイルを開きます
  3. oauthScopes というラベルの付いた最上位フィールドを見つけます。存在しない場合は、追加できます。
  4. oauthScopes フィールドは、文字列の配列を指定します。プロジェクトで使用するスコープを設定するには、この配列の内容を、使用するスコープに置き換えます。 たとえば、Gmail を拡張する Google Workspace アドオンの場合、次のようになります。

     {
       ...
       "oauthScopes": [
         "https://www.googleapis.com/auth/gmail.addons.current.message.metadata",
         "https://www.googleapis.com/auth/userinfo.email"
       ],
       ...
     }
    
  5. マニフェスト ファイルの変更を保存します。

OAuth の確認

特定の機密性の高い OAuth スコープを使用する場合は、アドオンを公開する前に OAuth クライアント検証を受ける必要があります。詳細については、次のガイドをご覧ください。

制限付きスコープ

特定のスコープは制限付きであり、ユーザーデータの保護に役立つ追加のルールが適用されます。 1 つ以上の制限付きスコープを使用する Gmail またはエディタ アドオンを公開する場合は、公開前にアドオンが指定されたすべての制限に準拠する必要があります。

公開前に、制限付きスコープの完全なリスト を確認してください。アドオンでこれらの API のいずれかを使用している場合は、公開前に 特定の API スコープの追加要件 に準拠させる必要があります。

Visual Studio Code 用の Google Workspace デベロッパー ツール拡張機能 には、スコープの説明や、機密性の高いスコープか制限付きスコープかなど、すべてのスコープに関する診断情報が表示されます。

Google Workspace アドオンのスコープを選択する

以降のセクションでは、Google Workspace アドオンでよく使用されるスコープについて説明します。

エディタのスコープ

Google Workspace アドオンでよく使用される次のスコープは、Google ドキュメント、Google スプレッドシート、Google スライドを拡張します。

スコープ
現在のドキュメント ファイルへのアクセス https://www.googleapis.com/auth/documents.currentonly

アドオンが Google Apps Script Docs API にアクセスする場合は必須です。 開いているドキュメントのコンテンツへの一時的なアクセス権を付与します。

現在のスプレッドシート ファイルへのアクセス https://www.googleapis.com/auth/spreadsheets.currentonly

アドオンが Apps Script Sheets API にアクセスする場合は必須です。 開いているスプレッドシートのコンテンツへの一時的なアクセス権を付与します。

現在のスライド ファイルへのアクセス https://www.googleapis.com/auth/presentations.currentonly

アドオンが Apps Script Slides API にアクセスする場合は必須です。 開いているプレゼンテーションのコンテンツへの一時的なアクセス権を付与します。

ファイルごとのアクセス https://www.googleapis.com/auth/drive.file

アドオンで onFileScopeGrantedTrigger を使用する場合、およびアドオンが Docs、Sheets、 Slides、Drive API にアクセスする場合は必須です Apps Script の高度な Google ドライブ サービスを使用してアプリが作成または開いたファイルへのファイルごとのアクセス権を付与します。基本的なドライブ サービスを使用して同様の操作を行うことはできません。ファイルの承認はファイルごとに行われ、ユーザーがアプリの承認を取り消すと取り消されます。

Gmail

Google Workspace アドオン専用のスコープが用意されており、ユーザーの Gmail データを保護できます。これらのスコープは、必要な他のスコープとともに、アドオン マニフェストに明示的に追加します。

次の表に、Gmail を拡張する Google Workspace アドオンでよく使用されるスコープを示します。アドオンが Gmail を拡張する場合は、[必須] と表示されているスコープを Google Workspace アドオン マニフェストに追加する必要があります。

広範な https://mail.google.com スコープを、アドオンに必要な操作を許可する、より狭いスコープのセットに置き換えます。

スコープ
新しい回答案を作成 https://www.googleapis.com/auth/gmail.addons.current.action.compose

アドオンが メール作成アクション トリガーを使用する場合は必須です アドオンで新しい 回答案メッセージと返信を一時的に作成できます。詳しくは、 回答案メッセージを作成するをご覧ください。このスコープは、[メール作成アクション] (/workspace/add-ons/gmail/extending-compose-ui) と組み合わせて使用されることがよくあります。アクセス トークンが必要です。

開いているメッセージのメタデータを読み取る https://www.googleapis.com/auth/gmail.addons.current.message.metadata

開いているメッセージのメタデータ(件名や受信者など)への一時的なアクセス権を付与します。メッセージ コンテンツの読み取りは許可されず、 アクセス トークンが必要です。

アドオンがメール作成アクション トリガーでメタデータを使用する場合は必須です。メール作成アクションの場合、メール作成トリガーがメタデータにアクセスする必要がある場合は、このスコープが必要です。実際には、このスコープを使用すると、メール作成トリガーが 返信メールの下書きの受信者リスト(宛先、Cc、Bcc)にアクセスできます。

開いているメッセージのコンテンツを読み取る https://www.googleapis.com/auth/gmail.addons.current.message.action

アドオン メニュー アイテムの選択など、ユーザー インタラクション時に開いているメッセージのコンテンツへのアクセス権を付与します。アクセス トークンが必要です。

開いているスレッドのコンテンツを読み取る https://www.googleapis.com/auth/gmail.addons.current.message.readonly

開いているメッセージのメタデータとコンテンツへの一時的なアクセス権を付与します。 開いている スレッド内の他のメッセージのコンテンツへのアクセス権も付与します。アクセス トークンが必要です。

任意のメッセージのコンテンツとメタデータを読み取る https://www.googleapis.com/auth/gmail.readonly

開いているメッセージを含む、任意のメールのメタデータとコンテンツを読み取ります。検索クエリの実行やメール スレッド全体の読み取りなど、他のメッセージに関する情報を読み取る必要がある場合は必須です。

Google カレンダーのスコープ

次の表に、Google カレンダーを拡張する Google Workspace アドオンでよく使用されるスコープを示します。

スコープ
イベントのメタデータにアクセスする https://www.googleapis.com/auth/calendar.addons.execute

アドオンが カレンダーの予定のメタデータにアクセスする場合は必須です。アドオンでイベントのメタデータにアクセスできます。

ユーザーが生成したイベントデータを読み取る https://www.googleapis.com/auth/calendar.addons.current.event.read

アドオンで ユーザーが生成したイベントデータを読み取る必要がある場合は必須です。アドオンでユーザーが生成したイベントデータにアクセスできます。 このデータは、 addOns.calendar.eventAccess マニフェスト フィールドREAD または READ_WRITE に設定されている場合にのみ使用できます。

ユーザーが生成したイベントデータを書き込む https://www.googleapis.com/auth/calendar.addons.current.event.write

アドオンでユーザーが生成したイベントデータを書き込む必要がある場合は必須です。アドオンでユーザーが生成したイベントデータを編集できます。 このデータは、 addOns.calendar.eventAccess マニフェスト フィールドWRITE または READ_WRITE に設定されている場合にのみ使用できます。

Google Chat のスコープ

Google Chat API を呼び出すには、 Google Chat ユーザーまたは Google Chat アプリとして認証します。 認証の種類ごとに必要なスコープが異なり、すべての Chat API メソッドがアプリ認証をサポートしているわけではありません。

Chat のスコープと認証タイプについて詳しくは、 Chat API 認証と認可の概要をご覧ください。

次の表に、サポートされている認証タイプに基づく、よく使用される Chat API メソッドとスコープを示します。

メソッド ユーザー認証 サポート アプリ認証がサポートされています サポートされている認可スコープ
メッセージを送信する アプリ認証の場合:
  • chat.bot
スペースを作成する アプリ認証と管理者による承認の場合(デベロッパー プレビューで利用可能):
  • chat.app.spaces.create
  • chat.app.spaces
スペースを作成してメンバーを追加する
スペースにユーザーを追加する アプリ認証と管理者による承認の場合(デベロッパー プレビューで利用可能):
  • chat.app.memberships
Chat スペースのアクティビティまたはイベントを一覧表示する

Google ドライブのスコープ

次の表に、Google ドライブを拡張する Google Workspace アドオンでよく使用されるスコープを示します。

スコープ
選択したアイテムのメタデータを読み取る https://www.googleapis.com/auth/drive.addons.metadata.readonly

アドオンが、ユーザーがドライブでアイテムを選択したときにトリガーされるコンテキスト インターフェースを実装する場合は必須です。アドオンで、ユーザーが Google ドライブで選択したアイテムに関する限定的なメタデータを読み取ることができます。メタデータは、アイテムの ID、タイトル、MIME タイプ、アイコン URL、アドオンがアイテムにアクセスする権限を持っているかどうかのみに限定されます。

ファイルごとのアクセス https://www.googleapis.com/auth/drive.file

アドオンで 個々のドライブ ファイルにアクセスする必要がある場合は推奨されます。 Apps Script の高度なドライブ サービスを使用してアプリが作成または開いたファイルへのファイルごとのアクセス権を付与します。基本的なドライブ サービスを使用して同様の操作を行うことはできません。ファイルの承認はファイルごとに行われ、ユーザーがアプリの承認を取り消すと取り消されます。 選択したファイルへのファイル アクセスをリクエストするの例をご覧ください。

アクセス トークン

ユーザーデータを保護するため、Google Workspace アドオンで使用される Gmail スコープは、ユーザーデータへの一時的なアクセス権を付与します。一時的な アクセスを有効にするには、 GmailApp.setCurrentMessageAccessToken アクション イベント オブジェクトのアクセス トークンを使用して を呼び出します。

Gmail スコープを有効にするアクセス トークンは、ScriptApp.getOAuthToken から返されるアクセス トークンと同じではありません。アクション イベント オブジェクトで提供されるトークンを使用します。

次の例は、メッセージのメタデータへのアクセスを許可するようにアクセス トークンを設定する方法を示しています。この例に必要なスコープは https://www.googleapis.com/auth/gmail.addons.current.message.metadata のみです。

function readSender(e) {
  var accessToken = e.gmail.accessToken;
  var messageId = e.gmail.messageId;

  // The following function enables short-lived access to the current
  // message in Gmail. Access to other Gmail messages or data isn't
  // permitted.
  GmailApp.setCurrentMessageAccessToken(accessToken);
  var mailMessage = GmailApp.getMessageById(messageId);
  return mailMessage.getFrom();
}

その他の Google Workspace スコープ

アドオンで他の Google Workspace サービスまたは Apps Script サービスを使用する場合は、追加のスコープが必要になることがあります。ほとんどの場合、Apps Script はこれらのスコープを検出し、マニフェストを自動的に更新します。マニフェストのスコープリストを編集する場合は、より狭い代替スコープに置き換える場合を除き、スコープを削除しないでください。

次の表に、Google Workspace アドオンでよく使用されるスコープを示します。

スコープ
ユーザーのメールアドレスを読み取る https://www.googleapis.com/auth/userinfo.email

プロジェクトで現在のユーザーのメールアドレスを読み取ることができます。

外部サービスへの呼び出しを許可する https://www.googleapis.com/auth/script.external_request

プロジェクトで UrlFetch リクエストを行うことができます。プロジェクトで Apps Script 用 OAuth2 ライブラリを使用する場合にも必要です。

ユーザーのロケールとタイムゾーンを読み取る https://www.googleapis.com/auth/script.locale

プロジェクトで現在のユーザーの言語 / 地域とタイムゾーンを確認できます。詳しくは、 ユーザーのロケールとタイムゾーンにアクセスするをご覧ください。

トリガーを作成する https://www.googleapis.com/auth/script.scriptapp

プロジェクトでトリガーを作成できます

サードパーティのリンクをプレビューする https://www.googleapis.com/auth/workspace.linkpreview

アドオンが サードパーティ サービスのリンクをプレビューする場合は必須です。ユーザーが操作しているときに、Google Workspace アプリケーション内のリンクを表示できます。詳しくは、 スマートチップを使用してリンクをプレビューするをご覧ください。

サードパーティのリソースを作成する https://www.googleapis.com/auth/workspace.linkcreate

アドオンがサードパーティ サービスでリソースを作成する場合は必須です。プロジェクトで、ユーザーがリソース作成フォームに送信した情報を読み取り、Google Workspace アプリケーション内のリソースへのリンクを挿入できます。詳しくは、 @ メニューからサードパーティのリソースを作成するをご覧ください。