Google Drive API v3(Java)を使用して、
Driveに置かれているファイルをダウンロードする方法
についてご紹介します。
Driveに置かれているファイルをそのままダウンロードする方法と
ファイルの形式を変更してダウンロードする方法についてご紹介します。
Googleスプレットシートなどはそのままダウンロードすることはできませんので、
形式を変更してダウンロードすることになります。
APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Google Drive API v3] JavaでDrive APIを使う
を参照ください。
No | 目次 | |
---|---|---|
1 | ファイルをダウンロード | |
1 | スコープ | |
2 | 実行 | |
2 | 形式を指定してダウンロード | |
1 | スコープ | |
2 | 実行 | |
3 | 指定可能なMimeType |
1. ファイルをダウンロード
Driveに置かれているファイルをダウンロードします。
1.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
DriveScopes.DRIVE
DriveScopes.DRIVE_APPDATA
DriveScopes.DRIVE_FILE
DriveScopes.DRIVE_METADATA
DriveScopes.DRIVE_METADATA_READONLY
DriveScopes.DRIVE_PHOTOS_READONLY
DriveScopes.DRIVE_READONLY
⧉[Google Drive API v3] JavaでDrive APIを使う(2.2 Driveインスタンスを取得)
でスコープを指定してください。
1.2. 実行
ダウンロードしたいファイルのIDを指定してダウンロードします。
サンプルではダウンロードするファイル名を取得していますが、
必要がなければファイル名を直接指定してください。
なお、バイナリ以外のダウンロードできないファイル(スプレットシート等)を指定すると
Only files with binary content can be downloaded. Use Export with Docs Editors files.
というエラーが返ってきます。
2. 形式を指定してダウンロードの方法でダウンロードしてください。
public static void main(String[] args) throws Exception{
Drive drive = getDrive();
Drive.Files files = drive.files();
Drive.Files.Get get = files.get("ファイルID");
//出力先のファイル
String fileName = get.execute().getName();
File outputFile = new File("出力先のフォルダパス"+fileName);
//inputstreamを取得して、ファイルを出力します
try(InputStream input = get.executeMediaAsInputStream();
OutputStream outputStream = new FileOutputStream(outputFile, false)){
input.transferTo(outputStream);
}
}
1.2.1. HTTPリクエスト
GET: https://www.googleapis.com/drive/v3/files/{ファイルID}
が実行されます。
1.2.2. クエリパラメータ
Drive.Files.Getのsetメソッドにより、クエリパラメータを追加できます。
メソッド | 引数 | 説明 |
---|---|---|
setAcknowledgeAbuse | Boolean | ユーザーが既知のマルウェアまたはその他の不正なファイルをダウンロードするリスクを認識しているか |
setSupportsAllDrives | Boolean | 要求元のアプリケーションがマイドライブと共有ドライブの両方をサポートしているか |
2. 形式を指定してダウンロード
Driveに置かれているファイルをダウンロードします。
Googleドキュメントなど、そのままダウンロードできないファイルの場合にこの方法を使用します。
なお、サポートされているファイルのサイズは10Mbyteまでだそうです。
2.1. スコープ
このAPIを実行するには、以下のいずれかのスコープを指定してください。
DriveScopes.DRIVE
DriveScopes.DRIVE_FILE
DriveScopes.DRIVE_READONLY
⧉[Google Drive API v3] JavaでDrive APIを使う(2.2 Driveインスタンスを取得)
でスコープを指定してください。
2.2. 実行
ダウンロードしたいファイルのIDとMimeTypeを指定してダウンロードします。
MimeTypeの指定は、2.3. 指定可能なMimeTypeを参照ください。
public static void main(String[] args) throws Exception{
Drive drive = getDrive();
Drive.Files files = drive.files();
Drive.Files.Export export = files.export("ファイルID","MimeType");
File outputFile = new File("出力先のファイルパス");
try(InputStream input = export.executeMediaAsInputStream();
OutputStream outputStream = new FileOutputStream(outputFile, false)){
input.transferTo(outputStream);
}
}
2.2.1. HTTPリクエスト
GET: https://www.googleapis.com/drive/v3/files/{ファイルID}/export
が実行されます。
2.2.2. クエリパラメータ
クエリパラメータはありません。
2.3. 指定可能なMimeType
ファイルの種類毎に指定可能なMimeTypeの一覧です。
2.3.1. Google ドキュメント
指定可能な形式 | MimeType | 拡張子 |
---|---|---|
Microsoft Word | application/vnd.openxmlformats-officedocument.wordprocessingml.document | .docx |
OpenDocument | application/vnd.oasis.opendocument.text | .odt |
Rich Text | application/rtf | .rtf |
application/pdf | ||
Plain Text | text/plain | .txt |
Web Page (HTML) | application/zip | .zip |
EPUB | application/epub+zip | .epub |
2.3.2. Google スプレットシート
指定可能な形式 | MimeType | 拡張子 |
---|---|---|
Microsoft Excel | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | .xlsx |
OpenDocumentファイル形式(ODF) | application/x-vnd.oasis.opendocument.spreadsheet | .ods |
application/pdf | ||
Web Page (HTML) | application/zip | .zip |
CSV | text/csv | .csv |
TSV | text/tab-separated-values | .tsv |
2.3.3. Google スライド
指定可能な形式 | MimeType | 拡張子 |
---|---|---|
Microsoft PowerPoint | application/vnd.openxmlformats-officedocument.presentationml.presentation | .pptx |
OpenDocumentファイル形式(ODF) | application/vnd.oasis.opendocument.presentation | .odp |
application/pdf | ||
テキスト | text/plain | .txt |
画像(JPEG) | image/jpeg | .jpg |
画像(PNG) | image/png | .png |
画像(SVG) | image/svg+xml | .svg |
2.3.4. Google 図形描画
指定可能な形式 | MimeType | 拡張子 |
---|---|---|
application/pdf | ||
画像(JPEG) | image/jpeg | .jpg |
画像(PNG) | image/png | .png |
画像(SVG) | image/svg+xml | .svg |
2.3.5. Google Apps Script
指定可能な形式 | MimeType | 拡張子 |
---|---|---|
JSON | application/vnd.google-apps.script+json | .json |
おしまい。。