Google 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 リクエスト ヘッダーを受け入れることもできます(カレンダーの高度なサービスなど)。
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);
UrlFetchApp メソッドの場合は、スクリプトのマニフェスト ファイルで必要な OAuth スコープを手動で指定します。
可能な限り高度なサービスを使用し、高度なサービスが利用できない場合や、必要な機能が提供されていない場合にのみ UrlFetch メソッドを使用します。
高度なサービスのサポート
高度なサービスは Google API のシンラッパーであるため、使用中に発生した問題は通常、Apps Script ではなく、基盤となる API の問題です。
高度なサービスの使用中に問題が発生した場合は、基盤となる API のサポート手順に沿って報告してください。