Apps Script の高度なサービスを使用すると、HTTP インターフェースを使用する場合よりも少ない設定で、特定のパブリック Google API に接続できます。拡張サービスは、これらの Google API のシンラッパーです。これらは Apps Script の組み込みサービスとよく似ています。たとえば、自動補完が提供され、Apps Script が認可フローを自動的に処理します。ただし、スクリプトで使用する前に拡張サービスを有効にする必要があります。
拡張サービスを有効にする
高度な Google サービスを使用する手順は次のとおりです。
ステップ 1: 詳細サービスを有効にする
高度なサービスは、Apps Script エディタを使用するか、マニフェストを編集することで有効にできます。
方法 A: エディタを使用する
- Apps Script プロジェクトを開きます。
- 左側の [エディタ] をクリックします。
- 左側の [サービス] の横にある [サービスを追加] をクリックします。
- 高度な Google サービスを選択し、[追加] をクリックします。
方法 B: マニフェストを使用する
高度なサービスを有効にするには、マニフェスト ファイルを編集します。たとえば、Google ドライブの高度なサービスを有効にするには、dependencies オブジェクトに enabledAdvancedServices フィールドを追加します。
{
"timeZone": "America/Denver",
"dependencies": {
"enabledAdvancedServices": [
{
"userSymbol": "Drive",
"version": "v3",
"serviceId": "drive"
}
]
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8"
}
高度なサービスを有効にすると、自動補完で使用できるようになります。
ステップ 2: Google Cloud API を有効にする(標準の Google Cloud プロジェクトのみ)
デフォルトの Google Cloud プロジェクト(Apps Script によって自動的に作成されたもの)を使用している場合は、この手順をスキップできます。API は、ステップ 1 でサービスを追加すると自動的に有効になります。
標準の Google Cloud プロジェクトを使用している場合は、高度なサービスに対応する API も手動で有効にする必要があります。API を手動で有効にするには:
**Google Cloud コンソール**で、スクリプトに関連付けられている Cloud プロジェクトを開きます。
コンソールの上部にある検索バーをクリックし、API 名の一部(「Calendar」など)を入力して、名前が表示されたらクリックします。
[API を有効にする] をクリックします。
Google Cloud コンソールを閉じて、スクリプト エディタに戻ります。
メソッド シグネチャの決定方法
高度なサービスでは、一般的に対応する公開 API と同じオブジェクト、メソッド名、パラメータを使用しますが、メソッド シグネチャは Apps Script で使用できるように変換されます。スクリプト エディタのオートコンプリート機能は、通常、開始に必要な十分な情報を提供しますが、以下のルールでは、Apps Script が公開 Google API からメソッド シグネチャを生成する方法について説明します。
Google API へのリクエストでは、パスパラメータ、クエリ パラメータ、リクエスト本文、メディア アップロードの添付ファイルなど、さまざまな種類のデータを受け入れることができます。一部の高度なサービスでは、特定の HTTP リクエスト ヘッダーを受け入れることもできます(カレンダーの高度なサービスなど)。
Google Apps Script の対応するメソッド シグネチャには、次の引数があります。
- リクエスト本文(通常はリソース)。JavaScript オブジェクトとして指定します。
- パス パラメータまたは必須パラメータ(個別の引数として)。メソッドに複数のパスパラメータが必要な場合は、API エンドポイント URL に記載されている順に表示されます。
- メディア アップロードの添付ファイル(
Blob引数)。 - 省略可能なパラメータ(通常はクエリ パラメータ)。パラメータ名と値をマッピングする JavaScript オブジェクトとして指定します。
- HTTP リクエスト ヘッダー。ヘッダー名をヘッダー値にマッピングする JavaScript オブジェクトとして指定します。
メソッドに特定のカテゴリのアイテムがない場合、シグネチャのその部分は省略されます。
注意すべき例外がいくつかあります。
- メディア アップロードを受け入れるメソッドの場合、パラメータ
uploadTypeは自動的に設定されます。 - Google API で
deleteという名前のメソッドは、Apps Script ではremoveという名前になります。これは、deleteが JavaScript の予約語であるためです。 - HTTP リクエスト ヘッダーを受け入れるように高度なサービスが構成されていて、リクエスト ヘッダーの JavaScript オブジェクトを設定した場合は、オプション パラメータの JavaScript オブジェクトも設定する必要があります(オプション パラメータを使用しない場合は空のオブジェクトに設定します)。
例: Calendar.Events.insert
カレンダーの予定を作成するとします。Google Calendar API のドキュメントには、対応する HTTP リクエスト構造が示されています。
- HTTP 動詞:
POST - リクエスト URL:
https://www.googleapis.com/calendar/v3/calendars/{calendarId}/events リクエストの本文: イベント リソース。
クエリ パラメータ:
sendUpdates、supportsAttachmentsなど。
Apps Script では、これらの入力を並べ替えることでメソッド シグネチャが決定されます。
- Body: イベント リソース(JavaScript オブジェクト)。
- Path:
calendarId(文字列)。 - 省略可能なパラメータ: クエリ パラメータ(JavaScript オブジェクト)。
結果のメソッド呼び出しは次のようになります。
const event = {
summary: 'Lunch',
location: 'Deli',
start: {
dateTime: '2026-01-01T12:00:00-05:00'
},
end: {
dateTime: '2026-01-01T13:00:00-05:00'
}
};
const calendarId = 'primary';
const optionalArgs = {
sendUpdates: 'all'
};
Calendar.Events.insert(event, calendarId, optionalArgs);
高度なサービスまたは HTTP?
Google 拡張サービスのそれぞれが、公開 Google API に関連付けられています。Apps Script では、拡張サービスを使用するか、UrlFetch を使用して API リクエストを直接行うことで、これらの API にアクセスできます。
高度なサービス メソッドを使用する場合、Apps Script は承認フローを処理し、オートコンプリートをサポートします。ただし、使用する前に拡張サービスを有効にする必要があります。
UrlFetch メソッドを使用して API に直接アクセスする場合、Google API は基本的に外部 API として扱われます。このメソッドを使用すると、API のすべての側面を使用できます。ただし、API 認証を処理する必要があります。
次の表は、2 つの方法を比較したものです。
| 機能 | 拡張サービス | UrlFetch(HTTP) |
|---|---|---|
| 認可 | 自動的に処理される | 手動での対応が必要 |
| 予測入力 | 利用可能 | 利用不可 |
| 機能の範囲 | API のサブセットである可能性があります | すべての API 機能に対する完全アクセス権 |
| 複雑さ | 難易度を低くする | より複雑(ヘッダーの構築とレスポンスの解析が必要) |
コードの比較
コードサンプルは、高度なサービスを使用してカレンダーの予定を作成する場合と UrlFetchApp を使用する場合の複雑さの違いを示しています。
高度なサービス:
const event = {
summary: 'Lunch',
location: 'Deli',
start: { dateTime: '2026-01-01T12:00:00-05:00' },
end: { dateTime: '2026-01-01T13:00:00-05:00' }
};
const optionalArgs = {
sendUpdates: 'all'
};
Calendar.Events.insert(event, 'primary', optionalArgs);
UrlFetch(HTTP):
const event = {
summary: 'Lunch',
location: 'Deli',
start: { dateTime: '2026-01-01T12:00:00-05:00' },
end: { dateTime: '2026-01-01T13:00:00-05:00' }
};
const url = 'https://www.googleapis.com/calendar/v3/calendars/primary/events?sendUpdates=all';
const options = {
method: 'post',
contentType: 'application/json',
headers: {
Authorization: `Bearer ${ScriptApp.getOAuthToken()}`
},
payload: JSON.stringify(event)
};
UrlFetchApp.fetch(url, options);
可能な限り高度なサービスを使用し、高度なサービスが利用できない場合や、必要な機能が提供されていない場合にのみ UrlFetch メソッドを使用することをおすすめします。
高度なサービスのサポート
高度なサービスは Google API のシンラッパーであるため、使用中に発生した問題は通常、Apps Script ではなく、基盤となる API の問題です。
高度なサービスの使用中に問題が発生した場合は、基盤となる API のサポート手順に沿って報告する必要があります。