Google Drive API は、次の表に示すように、複数の種類のダウンロードとエクスポートのアクションをサポートしています。
| ダウンロード アクション |
|
||||
| エクスポート アクション |
|
ファイル コンテンツをダウンロードまたはエクスポートする前に、files リソースの capabilities.canDownload フィールドを使用してユーザーがファイルをダウンロードできることを確認します。
ここで説明するファイル形式(BLOB や Google Workspace ファイルなど)については、ファイル形式をご覧ください。
このドキュメントでは、上記のダウンロードとエクスポートを行う手順について詳しく説明します。
BLOB ファイルのコンテンツをダウンロードする
ドライブに保存されている BLOB ファイルをダウンロードするには、ダウンロードするファイルの ID と alt=media URL パラメータを指定して files.get メソッドを使用します。alt=media URL パラメータは、代替レスポンス形式としてコンテンツのダウンロードがリクエストされていることをサーバーに伝えます。
alt=media URL パラメータは、すべての Google REST API で使用できるシステム パラメータです。Drive API クライアント ライブラリを使用する場合は、クライアント ライブラリ メソッドが基盤となる HTTP リクエストに alt=media URL パラメータを追加するため、このパラメータを明示的に設定する必要はありません。
次のコードサンプルは、files.get メソッドを使用してファイルをダウンロードする方法を示しています。
Apps Script
/**
* Downloads a file from Drive.
* @param {string} fileId The ID of the file to download.
* @return {Blob} The file content as a Blob.
*/
function downloadFile(fileId) {
var url = 'https://www.googleapis.com/drive/v3/files/' + fileId + '?alt=media';
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
}
});
return response.getBlob();
}
Java
Python
Node.js
PHP
.NET
curl
curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID?alt=media" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--output "FILE_NAME"
次のように置き換えます。
- FILE_ID: ダウンロードするファイルの ID。
- ACCESS_TOKEN: API へのアクセスを許可するアクセス トークン。
- FILE_NAME: 出力ファイルの名前。
アプリから開始されたファイルのダウンロードは、ファイル コンテンツへの読み取りアクセスを許可するスコープで承認する必要があります。たとえば、drive.readonly.metadata スコープを使用するアプリは、ファイルの内容をダウンロードする権限がありません。クライアント ライブラリのコードサンプルでは、ユーザーがすべてのドライブ ファイルを表示および管理できる制限付きの drive ファイル スコープを使用します。ドライブのスコープについて詳しくは、Google Drive API のスコープを選択するをご覧ください。
owner 権限(マイドライブ ファイルの場合)または organizer 権限(共有ドライブ ファイルの場合)を持つユーザーは、DownloadRestrictionsMetadata オブジェクトを使用してダウンロードを制限できます。詳しくは、ユーザーがファイルをダウンロード、印刷、コピーできないようにするをご覧ください。
不正使用(有害なソフトウェアなど)と判断されたファイルは、ファイルのオーナーのみがダウンロードできます。また、ユーザーが望ましくない可能性のあるソフトウェアやその他の不正なファイルをダウンロードするリスクを認識していることを示すために、get クエリ パラメータ acknowledgeAbuse=true を含める必要があります。アプリは、このクエリ パラメータを使用する前に、ユーザーに警告をインタラクティブに表示する必要があります。
部分的なダウンロード
部分的ダウンロードでは、ファイルの指定された部分のみをダウンロードします。ダウンロードするファイルの部分を指定するには、Range ヘッダーでバイト範囲を使用します。次に例を示します。
Range: bytes=500-999
以前のバージョンの BLOB ファイル コンテンツをダウンロードする
「この履歴を削除しない」とマークされた blob ファイル コンテンツの改訂版のみをダウンロードできます。リビジョンをダウンロードする場合は、まず [この履歴を削除しない] に設定します。詳細については、自動削除から保存するリビジョンを指定するをご覧ください。
以前のバージョンの BLOB ファイルのコンテンツをダウンロードするには、ダウンロードするファイルの ID、リビジョンの ID、alt=media URL パラメータを指定して revisions.get メソッドを使用します。alt=media URL パラメータは、代替レスポンス形式としてコンテンツのダウンロードがリクエストされていることをサーバーに伝えます。files.get と同様に、revisions.get メソッドもオプションのクエリ パラメータ acknowledgeAbuse と Range ヘッダーを受け取ります。詳細については、長時間実行オペレーションの管理をご覧ください。
curl
curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID/revisions/REVISION_ID?alt=media" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--output "FILE_NAME"
次のように置き換えます。
- FILE_ID: ダウンロードするファイルの ID。
- REVISION_ID: ダウンロードするリビジョンの ID。
- ACCESS_TOKEN: API へのアクセスを許可するアクセス トークン。
- FILE_NAME: 出力ファイルの名前。
ブラウザで BLOB ファイルのコンテンツをダウンロードする
API ではなくブラウザ内で Drive に保存されている blob ファイルのコンテンツをダウンロードするには、files リソースの webContentLink フィールドを使用します。ユーザーがファイルへのダウンロード アクセス権を持っている場合は、ファイルとそのコンテンツをダウンロードするためのリンクが返されます。この URL にユーザーをリダイレクトするか、クリック可能なリンクを提示します。
curl
curl "https://www.googleapis.com/drive/v3/files/FILE_ID?fields=webContentLink" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
次のように置き換えます。
- FILE_ID: ダウンロード リンクを取得するファイルの ID。
- ACCESS_TOKEN: API へのアクセスを許可するアクセス トークン。
長時間実行オペレーションを使用して BLOB ファイルのコンテンツをダウンロードする
長時間実行オペレーション(LRO)を使用して BLOB ファイルのコンテンツをダウンロードするには、ダウンロードするファイルの ID を指定して files.download メソッドを使用します。必要に応じて、リビジョンの ID を設定できます。
Google Vids ファイルをダウンロードできるのはこの方法のみです。Google Vids ファイルをエクスポートしようとすると、fileNotExportable エラーが表示されます。詳細については、長時間実行オペレーションの管理をご覧ください。
curl
次の curl コマンドは LRO を開始し、JSON レスポンスを返します。ファイルをダウンロードするか、この LRO をポーリングするには、返された ID を使用して別のリクエストを行い、コンテンツ URL を取得する必要があります。次に、その URL に最終的な curl リクエストを送信して、ファイルをダウンロードします。詳細については、長時間実行オペレーションの管理をご覧ください。
curl --request POST "https://www.googleapis.com/drive/v3/files/FILE_ID/download?mimeType=video/mp4" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Content-Length: 0" \
--header "Accept: application/json"
次のように置き換えます。
- FILE_ID: ダウンロードするファイルの ID。
- ACCESS_TOKEN: API へのアクセスを許可するアクセス トークン。
Google Workspace ドキュメントのコンテンツをエクスポートする
Google Workspace ドキュメントのバイト コンテンツをエクスポートするには、エクスポートするファイルの ID と正しい MIME タイプを指定して files.export メソッドを使用します。エクスポートされるコンテンツは 10 MB に制限されます。
次のコードサンプルは、files.export メソッドを使用して Google Workspace ドキュメントを PDF 形式でエクスポートする方法を示しています。
Apps Script
/**
* Exports a Google Workspace document.
* @param {string} fileId The ID of the file to export.
* @param {string} mimeType The MIME type to export to.
* @return {Blob} The exported content as a Blob.
*/
function exportPdf(fileId, mimeType) {
var url = 'https://www.googleapis.com/drive/v3/files/' + fileId + '/export?mimeType=' + encodeURIComponent(mimeType);
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
}
});
return response.getBlob();
}
Java
Python
Node.js
PHP
.NET
curl
curl -L "https://www.googleapis.com/drive/v3/files/FILE_ID/export?mimeType=application/pdf" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--output "FILE_NAME.pdf"
次のように置き換えます。
- FILE_ID: ダウンロードするファイルの ID。
- ACCESS_TOKEN: API へのアクセスを許可するアクセス トークン。
- FILE_NAME: 出力ファイルの名前。
クライアント ライブラリのコードサンプルでは、ユーザーがすべてのドライブ ファイルを表示および管理できる制限付きの drive スコープを使用します。ドライブのスコープについて詳しくは、Google Drive API のスコープを選択するをご覧ください。
コードサンプルでは、エクスポート MIME タイプも application/pdf として宣言しています。各 Google Workspace ドキュメントでサポートされているすべてのエクスポート MIME タイプの完全なリストについては、Google Workspace ドキュメントのエクスポート MIME タイプをご覧ください。
ブラウザで Google Workspace ドキュメントのコンテンツをエクスポートする
ブラウザ内で Google Workspace ドキュメントのコンテンツをエクスポートするには、files リソースの exportLinks フィールドを使用します。ドキュメント タイプに応じて、利用可能なすべての MIME タイプについて、ファイルとそのコンテンツをダウンロードするためのリンクが返されます。この URL にユーザーをリダイレクトするか、クリック可能なリンクを提示します。
curl
curl "https://www.googleapis.com/drive/v3/files/FILE_ID?fields=id,name,exportLinks" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
次のように置き換えます。
- FILE_ID: ダウンロード リンクを取得するファイルの ID。
- ACCESS_TOKEN: API へのアクセスを許可するアクセス トークン。
ブラウザで以前のバージョンの Google Workspace ドキュメントのコンテンツをエクスポートする
ブラウザで以前のバージョンの Google Workspace ドキュメントのコンテンツをエクスポートするには、ダウンロードするファイルの ID とリビジョンの ID を指定して revisions.get メソッドを使用し、ダウンロードを実行できるエクスポート リンクを生成します。ユーザーがファイルへのダウンロード アクセス権を持っている場合は、ファイルとそのコンテンツをダウンロードするためのリンクが返されます。この URL にユーザーをリダイレクトするか、クリック可能なリンクを提示します。
curl
curl "https://www.googleapis.com/drive/v3/files/FILE_ID/revisions/REVISION_ID?fields=id,name,exportLinks" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Accept: application/json"
次のように置き換えます。
- FILE_ID: ダウンロードするファイルの ID。
- REVISION_ID: ダウンロードするリビジョンの ID。
- ACCESS_TOKEN: API へのアクセスを許可するアクセス トークン。
長時間実行オペレーションを使用して Google Workspace ドキュメントのコンテンツをエクスポートする
長時間実行オペレーション(LRO)を使用して Google Workspace ドキュメントのコンテンツをエクスポートするには、ダウンロードするファイルの ID とリビジョンの ID を指定して files.download メソッドを使用します。詳細については、長時間実行オペレーションの管理をご覧ください。
curl
次の curl コマンドは LRO を開始し、JSON レスポンスを返します。ファイルをダウンロードするか、この LRO をポーリングするには、返された ID を使用して別のリクエストを行い、コンテンツ URL を取得する必要があります。次に、その URL に最終的な curl リクエストを送信して、ファイルをダウンロードします。詳細については、長時間実行オペレーションの管理をご覧ください。
curl --request POST "https://www.googleapis.com/drive/v3/files/FILE_ID/download?mimeType=MIME_TYPE&revisionId=REVISION_ID" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--header "Content-Length: 0" \
--header "Accept: application/json"
次のように置き換えます。
- FILE_ID: ダウンロードするファイルの ID。
- MIME_TYPE: エクスポート先の MIME タイプ。
- REVISION_ID: ダウンロードするリビジョンの ID。
- ACCESS_TOKEN: API へのアクセスを許可するアクセス トークン。