Google Apps Script の拡張サービスを使用すると、HTTP インターフェースを使用する場合よりも少ない設定で、特定の公開 Google API に接続できます。拡張サービスは、これらの Google API のシンラッパーです。Apps Script の組み込みサービスとよく似ており、たとえば、自動補完機能が提供され、Apps Script が認可フローを自動的に処理します。スクリプトで使用する前に、拡張サービスを有効にしてください。
拡張サービスを有効にする
Google の拡張サービスを使用するには、次の手順を行います。
ステップ 1: 拡張サービスを有効にする
Apps Script エディタを使用するか、マニフェストを編集して、拡張サービスを有効にします。
方法 A: エディタを使用する
- Apps Script プロジェクトを開きます。
- 左側の [Editor] をクリックします。
- 左側の [**サービス**] の横にある [**サービスを追加**] をクリックします。
- Google の拡張サービスを選択し、[追加] をクリックします。
方法 B: マニフェストを使用する
マニフェスト
ファイルを編集して、拡張サービスを有効にします。たとえば、Google ドライブの拡張サービスを有効にするには、enabledAdvancedServices フィールドを dependencies オブジェクトに追加します。
{
"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 によって自動的に作成される)を使用している場合は、この手順をスキップしてください。ステップ 1 でサービスを追加すると、API が自動的に有効になります。
標準の Google Cloud プロジェクトを使用している場合は、拡張サービスに対応する API を手動で有効にします。API を手動で有効にするには:
** Google Cloud コンソール** で、スクリプトに関連付けられたクラウド プロジェクトを開きます。
コンソールの上部にある検索バーをクリックし、API 名の一部(「Calendar」など)を入力して、名前が表示されたらクリックします。
[API を有効にする] をクリックします。
Google Cloud コンソールを閉じて、スクリプト エディタに戻ります。
メソッド シグネチャの決定方法
通常、拡張サービスは、対応する公開 API と同じオブジェクト、メソッド名、パラメータを使用しますが、メソッド シグネチャは Apps Script で使用できるように変換されます。通常、スクリプト エディタの自動補完 機能で、作業を開始するのに 十分な情報が提供されます。次のルールでは、Apps Script が公開 Google API からメソッド シグネチャを生成する方法について説明します。
Google API へのリクエストでは、パスパラメータ、クエリ パラメータ、リクエスト本文、メディア アップロード添付ファイルなど、さまざまな種類のデータを受け入れることができます。一部の拡張サービスでは、特定の HTTP リクエスト ヘッダー (たとえば、Calendar の拡張 サービスなど)を受け入れることもできます。
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 カレンダー API のドキュメントには、対応する HTTP リクエスト構造が記載されています。
- HTTP 動詞:
POST - リクエスト URL:
https://www.googleapis.com/calendar/v3/calendars/{calendarId}/events リクエスト本文: イベント リソース。
クエリ パラメータ:
sendUpdates、supportsAttachmentsなど。
Apps Script では、これらの入力を並べ替えることでメソッド シグネチャが決定されます。
- 本文: イベント リソース(JavaScript オブジェクト)。
- パス:
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 メソッドの場合は、スクリプトの manifest
file に必要な
OAuth スコープを手動で指定します。
可能な限り拡張サービスを使用し、拡張サービスが利用できない場合や、必要な機能を提供していない場合にのみ UrlFetch メソッドを使用してください。
拡張サービスのサポート
拡張サービスは Google API のシンラッパーであるため、使用中に発生する問題は通常、Apps Script ではなく基盤となる API の問題です。
拡張サービスの使用中に問題が発生した場合は、基盤となる API のサポート手順に沿って報告してください。