0
0

[Google Drive API v3] JavaでDriveのファイルをダウンロードする

Last updated at Posted at 2024-03-13

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
PDF application/pdf .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
PDF application/pdf .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
PDF application/pdf .pdf
テキスト text/plain .txt
画像(JPEG) image/jpeg .jpg
画像(PNG) image/png .png
画像(SVG) image/svg+xml .svg

2.3.4. Google 図形描画

指定可能な形式 MimeType 拡張子
PDF application/pdf .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


おしまい。。
0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0