Apps Script の高度なサービスにより、経験豊富な開発者は、HTTP インターフェースを使用する場合よりも、簡単に特定の公開 Google API に接続できます。高度なサービスは、基本的に Google API のシンラッパーです。これらは、Apps Script の組み込みサービスと同様に動作します。たとえば、オートコンプリート機能を提供し、Apps Script は自動的に承認フローを処理します。ただし、スクリプトで高度なサービスを使用するには、その前に拡張サービスを有効にする必要があります。
どの Google API が高度なサービスとして利用可能かを確認するには、リファレンスで高度な Google サービスのセクションをご覧ください。高度なサービスとして利用できない Google API を使用する場合は、他の外部 API と同様に API に接続します。
高度なサービスまたは HTTP
高度な Google の各サービスは公開 Google API に関連付けられています。Apps Script では、高度なサービスを介して、または単に UrlFetch
を使用して API リクエストを行うことで、これらの API にアクセスできます。
高度なサービス メソッドを使用した場合、Apps Script が認可フローを処理し、オートコンプリートをサポートします。ただし、使用する前に高度なサービスを有効にする必要があります。また、一部の高度なサービスでは、API で利用できる機能のサブセットのみが提供されます。
UrlFetch
メソッドを使用して API に直接アクセスする場合、基本的には Google API を外部 API として扱います。この方法では、API のすべての要素を使用できます。ただし、API 承認は自身で処理する必要があります。また、必要なヘッダーを作成し、API レスポンスを解析する必要もあります。
一般に、可能な限り高度なサービスを使用するのが最も簡単で、高度なサービスで必要な機能が提供されない場合にのみ、UrlFetch
メソッドを使用します。
要件
高度なサービスを使用するには、次の要件を満たす必要があります。
- スクリプト プロジェクトで高度なサービスを有効にする必要があります。
スクリプトが使用する Cloud Platform(GCP)プロジェクトで、高度なサービスに対応する API が有効になっている必要があります。
スクリプト プロジェクトで 2019 年 4 月 8 日以降に作成されたデフォルトの GCP プロジェクトを使用している場合、高度なサービスを有効にしてスクリプト プロジェクトを保存すると、API が自動的に有効になります。また、Google Cloud Platform と Google API の利用規約にも同意するよう求められる場合があります。
スクリプト プロジェクトで標準の GCP プロジェクトまたは古いデフォルト GCP プロジェクトを使用している場合は、GCP プロジェクトで高度なサービスに対応する API を手動で有効にする必要があります。この変更を行うには、GCP プロジェクトの編集権限が必要です。
詳細については、Cloud Platform プロジェクトをご覧ください。
高度なサービスを有効にする
Google の高度なサービスを使用するには、次の手順を行います。
- Apps Script プロジェクトを開きます。
- 左側の [エディタ] をクリックします。
- 左側の [サービス] の横にある [サービスを追加] をクリックします。
- 高度な Google サービスを選択し、[追加] をクリックします。
詳細サービスを有効にすると、オートコンプリートで使用できるようになります。
メソッド シグネチャの決定方法
高度なサービスは通常、対応する公開 API と同じオブジェクト、メソッド名、パラメータを使用しますが、メソッド シグネチャは Apps Script で使用できるように翻訳されています。スクリプト エディタのオートコンプリート関数は、通常、使い始める際に十分な情報を提供しますが、下記のルールは、Apps Script で一般公開の Google API からメソッド シグネチャを生成する方法を示しています。
Google API へのリクエストでは、パスパラメータ、クエリ パラメータ、リクエスト本文、メディア アップロードのアタッチメントなど、さまざまな種類のデータを受け入れます。一部の高度なサービスでは、特定の HTTP リクエスト ヘッダーも受け入れることができます(カレンダー アドバンス サービスなど)。
Google Apps Script の対応するメソッド シグネチャには次の引数があります。
- JavaScript オブジェクトとしてのリクエスト本文(通常はリソース)。
- パスまたは必須パラメータ(個々の引数として)。
Blob
引数として指定されたメディア アップロード アタッチメント。- パラメータ名を値にマッピングする JavaScript オブジェクトとしての省略可能なパラメータ。
- HTTP リクエスト ヘッダー。ヘッダー名をヘッダー値にマッピングする JavaScript オブジェクトです。
このメソッドに特定のカテゴリ内のアイテムがない場合、署名のその部分は省略されます。
注意すべき特別な例外がいくつかあります。
- メディア アップロードを受け入れるメソッドの場合、パラメータ
uploadType
が自動的に設定されます。 - Google API の
delete
という名前のメソッドは、Apps Script ではremove
という名前です。これは、delete
が JavaScript の予約語であるためです。 - HTTP リクエスト ヘッダーを受け入れるように高度なサービスが構成されていて、リクエスト ヘッダーの JavaScript オブジェクトを設定する場合、オプションのパラメータも JavaScript オブジェクトに設定する必要があります(オプションのパラメータを使用しない場合は空のオブジェクトに設定します)。
高度なサービスのサポート
高度なサービスは、Apps Script 内で Google API を使用できるようにするシンラッパーにすぎません。したがって、それらの使用時に発生する問題は通常、Apps Script 自体ではなく、基盤となる API の問題です。
高度なサービスの使用中に問題が発生した場合は、基盤となる API のサポート手順を使用して報告してください。これらのサポート手順へのリンクは、Apps Script のリファレンス セクションの高度なサービスガイドに記載されています。