LoginSignup
0
0

[Google Drive API v3] Javaでファイルをアップロード・生成・コピー・更新・削除する

Last updated at Posted at 2024-03-12

Google Drive API v3(Java)を使用して、
Driveにファイルをアップロード・生成・更新・コピー・削除する方法
についてご紹介します。

APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Google Drive API v3] JavaでDrive APIを使う
を参照ください。

No 目次
1 ファイルをアップロード
1 スコープ
2 実行
3 レスポンスの内容
2 ファイルを生成
1 スコープ
2 実行
3 レスポンスの内容
3 ファイルをコピー
1 スコープ
2 実行
3 レスポンスの内容
4 ファイルを置き換える
1 スコープ
2 実行
3 レスポンスの内容
5 ファイル情報を更新
1 スコープ
2 実行
3 レスポンスの内容
6 ファイルを削除
1 スコープ
2 実行
3 レスポンスの内容
7 Google DriveでサポートされるMimeType
8 よく使うMimeType

1. ファイルをアップロード

Driveにファイルをアップロードします。

アップロードするファイルの最大ファイルサイズは5,120GBです。

1.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

DriveScopes.DRIVE
DriveScopes.DRIVE_APPDATA
DriveScopes.DRIVE_FILE

⧉[Google Drive API v3] JavaでDrive APIを使う(2.2 Driveインスタンスを取得)
でスコープを指定してください。

1.2. 実行

setFieldsでレンスポンスで取得したいフィールド(File)を指定します。
指定しない場合は、必要最小限のレスポンスしか返ってきません。
ここでは「*」(全て取得)を指定しています。

File.setMimeType

File.setMimeType()でアップロード後のファイルのMimeTypeを指定できます。
指定するMimeTypeは、7. Google DriveでサポートされるMimeTypeを参照ください。

・ファイルをそのままアップロードする場合
 setMimeTypeは必要ありません。

・ファイル形式を変換してアップロードする場合
 setMimeTypeにMimeTypeを指定します。
 例えば、ExcelファイルをGoogleスプレットシートとしてアップロードしたい場合、
 setMimeType("application/vnd.google-apps.spreadsheet");
 new InputStreamContent("application/vnd.ms-excel",input);
 と指定します。
 InputStreamContentに指定するMimeTypeは8. よく使うMimeTypeにまとめました。

public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Files files = drive.files();
    
    File file = new File();
    file.setName("アップロード後のファイル名");
    //file.setMimeType("アップロード後のMimeType");
    
    try(FileInputStream input = new FileInputStream("アップロードするファイルパス")){
        InputStreamContent content = new InputStreamContent("アップロードするファイルのMimeType", input);
        
        Drive.Files.Create create = files.create(file,content);
        create.setFields("*");
        
        File res = create.execute();
        System.out.println(res);
    }
}

1.2.1. HTTPリクエスト

POST: https://www.googleapis.com/upload/drive/v3/files
が実行されます。

1.2.2. クエリパラメータ

Drive.Files.Createのsetメソッドにより、クエリパラメータを追加できます。

メソッド 引数 説明
setUploadType String URIへのアップロードリクエストタイプ
setIgnoreDefaultVisibility Boolean 作成されたファイルに対するドメインのデフォルトの可視性設定を無視するか
setKeepRevisionForever Boolean 新しいヘッド リビジョンに「keepForever」フィールドを設定するか
setOcrLanguage String 画像インポート時のOCR処理の言語コード
setSupportsAllDrives Boolean 要求元のアプリケーションがマイドライブと共有ドライブの両方をサポートしているか
setUseContentAsIndexableText Boolean アップロードされたコンテンツをインデックス可能なテキストとして使用するか

アップロードリクエストのタイプ

タイプ 説明
media 簡単なアップロード
メタデータなしでメディアのみ
multipart マルチパートアップロード
メディアとそのメタデータの両方を1つのリクエストでアップロード
resumable 再開可能なアップロード
少なくとも 2つの一連のリクエストを使用して、再開可能な方法でファイルをアップロード

1.2.3. リクエストボディ

Fileのsetメソッドにより、リクエストボディを設定できます。

フィールド メソッド 引数 説明
anchor setAnchor String JSON文字列として表されるドキュメントの領域
content setContent String コメントのプレーンテキストの内容
quotedFileContent setQuotedFileContent QuotedFileContent コメントが参照するファイルのコンテンツ

QuotedFileContent

メソッド 引数 説明
setMimeType String 引用されたコンテンツのMIMEタイプ
setValue String 引用した内容

1.3. レスポンスの内容

File

フィールド メソッド 戻り値 説明
id getId String ファイルのID
seetName getSeetName String ファイルの名前
mimeType getMimeType String ファイルの MIMEタイプ
description getDescription String ファイルの簡単な説明
copyRequiresWriterPermission getCopyRequiresWriterPermission Boolean このファイルをコピー、印刷、またはダウンロードするオプションを読者とコメント投稿者に対して無効にするか
contentHints getContentHints ContentHints ファイルの内容に関する追加情報
writersCanShare getWritersCanShare Boolean 権限のみを持つユーザーがwriterファイルの権限を変更できるか
parents getParents List<String> ファイルを含む親フォルダーのID
folderColorRgb setFolderColorRgb String フォルダーまたはフォルダーへのショートカットの色
starred getStarred Boolean ユーザーがファイルにスターを付けているか
trashed getTrashed Boolean ファイルが明示的に、またはゴミ箱に入れられた親フォルダーからゴミ箱に入れられたか
createdTime getCreatedTime String ファイルが作成された時刻
modifiedTime getModifiedTime String ファイルが誰かによって最後に変更された時刻
viewedByMeTime getViewedByMeTime String ユーザーがファイルを最後に表示した時刻
originalFilename getOriginalFilename String アップロードされたコンテンツの元のファイル名
properties getProperties Map<String,String> すべてのアプリに表示される任意のキーと値のペアのコレクション
appProperties getAppProperties Map<String,String> 要求元のアプリにとってプライベートな任意のキーと値のペアのコレクション
shortcutDetails getShortcutDetails ShortcutDetails ショートカットファイルの詳細
contentRestrictions getContentRestrictions List<ContentRestriction> ファイルのコンテンツへのアクセスに対する制限

ContentHints

メソッド 戻り値 説明
getIndexableText String フルテキストクエリを改善するためにファイルのインデックスを作成するテキスト
getThumbnail Thumbnail ファイルのサムネイル

Thumbnail

メソッド 戻り値 説明
getImage String Base64でエンコードされたサムネイル データ
getMimeType String サムネイルの MIMEタイプ

ShortcutDetails

メソッド 戻り値 説明
getTargetId String このショートカットが指すファイルのID

ContentRestriction

メソッド 戻り値 説明
geteReadOnly Boolean ファイルの内容が読み取り専用か
getReason String ファイルの内容が制限されている理由
getOwnerRestricted Boolean コンテンツ制限を、ファイルを所有するユーザーのみが変更または削除できるか

2. ファイルを生成

Driveに空のファイル(メタデータ)を生成します。
そのため、ファイルを指定してアップロードすることはしません。

下記画像のように「+新規」ボタンを押して、Googleスプレットシートなどを
選択した場合と同じような動作だと思ってください。

2.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

DriveScopes.DRIVE
DriveScopes.DRIVE_APPDATA
DriveScopes.DRIVE_FILE

⧉[Google Drive API v3] JavaでDrive APIを使う(2.2 Driveインスタンスを取得)
でスコープを指定してください。

2.2. 実行

setFieldsでレンスポンスで取得したいフィールド(File)を指定します。
指定しない場合は、必要最小限のレスポンスしか返ってきません。
ここでは「*」(全て取得)を指定しています。

File.setMimeType()で指定するMimeTypeは
7. Google DriveでサポートされるMimeTypeを参照ください。

public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Files files = drive.files();
    
    File file = new File();
    file.setName("生成するファイル名");
    file.setMimeType("生成するMimeType");
    
    Drive.Files.Create create = files.create(file);
    create.setFields("*");
    
    File res = create.execute();
    System.out.println(res);
}

2.2.1. HTTPリクエスト

POST: https://www.googleapis.com/drive/v3/files
が実行されます。

2.2.2. クエリパラメータ

Drive.Files.Createのsetメソッドにより、クエリパラメータを追加できます。

1.2.2. クエリパラメータと同じです。

2.2.3. リクエストボディ

Fileのsetメソッドにより、リクエストボディを設定できます。

1.2.3. リクエストボディと同じです。

2.3. レスポンスの内容

File

1.3. レスポンスの内容と同じです。

3. ファイルをコピー

Drive上にあるファイルをコピーします。

3.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

DriveScopes.DRIVE
DriveScopes.DRIVE_APPDATA
DriveScopes.DRIVE_FILE
DriveScopes.DRIVE_PHOTOS_READONLY

⧉[Google Drive API v3] JavaでDrive APIを使う(2.2 Driveインスタンスを取得)
でスコープを指定してください。

3.2. 実行

setFieldsでレンスポンスで取得したいフィールド(File)を指定します。
指定しない場合は、必要最小限のレスポンスしか返ってきません。
ここでは「*」(全て取得)を指定しています。

なお、1. ファイルをアップロードのように
File.setMimeType()で指定してコピーの際に形式を変更することはできません。
例えば、Excelファイルをコピーの際にGoogleスプレットシートにするなど。

public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Files files = drive.files();

    File file = new File();
    file.setName("コピー後のファイル名");
    
    Drive.Files.Copy copy = files.copy("コピー元のファイルID", file);
    copy.setFields("*");
    
    File res = copy.execute();
    System.out.println(res);
}

3.2.1. HTTPリクエスト

POST: https://www.googleapis.com/drive/v3/files/{ファイルID}/copy
が実行されます。

3.2.2. クエリパラメータ

Drive.Files.Copyのsetメソッドにより、クエリパラメータを追加できます。

メソッド 引数 説明
setIgnoreDefaultVisibility Boolean 作成されたファイルに対するドメインのデフォルトの可視性設定を無視するか
setKeepRevisionForever Boolean 新しいヘッドリビジョンに「keepForever」フィールドを設定するか
setOcrLanguage String 画像インポート時のOCR処理の言語コード
setSupportsAllDrives Boolean 要求元のアプリケーションがマイドライブと共有ドライブの両方をサポートしているか

3.2.3. リクエストボディ

Fileのsetメソッドにより、リクエストボディを設定できます。

1.2.3. リクエストボディと同じです。

3.3. レスポンスの内容

File

1.3. レスポンスの内容と同じです。

4. ファイルを置き換える

Driveのファイルを別のファイルに置き換えます。

置き換えるファイルの最大ファイルサイズは5,120GBです。

4.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

DriveScopes.DRIVE
DriveScopes.DRIVE_APPDATA
DriveScopes.DRIVE_FILE
DriveScopes.DRIVE_METADATA
DriveScopes.DRIVE_SCRIPTS

⧉[Google Drive API v3] JavaでDrive APIを使う(2.2 Driveインスタンスを取得)
でスコープを指定してください。

4.2. 実行

setFieldsでレンスポンスで取得したいフィールド(File)を指定します。
指定しない場合は、必要最小限のレスポンスしか返ってきません。
ここでは「*」(全て取得)を指定しています。

public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Files files = drive.files();
    
    File file = new File();
    file.setName("更新後のファイル名");
    
    try(FileInputStream input = new FileInputStream("更新するファイルパス")){
        InputStreamContent content = new InputStreamContent("更新するファイルのMimeType", input);
        
        Drive.Files.Update update = files.update("ファイルID", file, content);
        update.setFields("*");
        
        File res = update.execute();
        System.out.println(res);
    }
}

4.2.1. HTTPリクエスト

PATCH:https://www.googleapis.com/upload/drive/v3/files/{ファイルID}
が実行されます。

4.2.2. クエリパラメータ

Drive.Files.Updateのsetメソッドにより、クエリパラメータを追加できます。

メソッド 引数 説明
setUploadType String URIへのアップロードリクエストタイプ

4.2.3. リクエストボディ

Commentのsetメソッドにより、リクエストボディを設定できます。

1.2.3. リクエストボディと同じです。

4.3. レスポンスの内容

Fileのsetメソッドにより、リクエストボディを設定できます。

1.2.3. リクエストボディと同じです。

5. ファイル情報を更新

Driveのファイル情報を更新します。

5.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

DriveScopes.DRIVE
DriveScopes.DRIVE_APPDATA
DriveScopes.DRIVE_FILE
DriveScopes.DRIVE_METADATA
DriveScopes.DRIVE_SCRIPTS

⧉[Google Drive API v3] JavaでDrive APIを使う(2.2 Driveインスタンスを取得)
でスコープを指定してください。

5.2. 実行

サンプルではファイル名を変更しています。

setFieldsでレンスポンスで取得したいフィールド(File)を指定します。
指定しない場合は、必要最小限のレスポンスしか返ってきません。
ここでは「*」(全て取得)を指定しています。

なお、1. ファイルをアップロードのように
File.setMimeType()で指定してファイルの形式を変更することはできません。
例えば、ExcelファイルをGoogleスプレットシートにするなど。

public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Files files = drive.files();
    
    File file = new File();
    file.setName("新しいファイル名");

    Drive.Files.Update update = files.update("ファイルID", file);
    update.setFields("*");
    
    File res = update.execute();
    System.out.println(res);
}

5.2.1. HTTPリクエスト

PATCH:https://www.googleapis.com/drive/v3/files/{ファイルID}
が実行されます。

5.2.2. クエリパラメータ

Drive.Files.Updateのsetメソッドにより、クエリパラメータを追加できます。

4.2.2. クエリパラメータと同じです。

5.2.3. リクエストボディ

Fileのsetメソッドにより、リクエストボディを設定できます。

1.2.3. リクエストボディと同じです。

5.3. レスポンスの内容

File

1.3. レスポンスの内容と同じです。

6. ファイルを削除

Driveにあるファイルを削除します。

6.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

DriveScopes.DRIVE
DriveScopes.DRIVE_APPDATA
DriveScopes.DRIVE_FILE

⧉[Google Drive API v3] JavaでDrive APIを使う(2.2 Driveインスタンスを取得)
でスコープを指定してください。

6.2. 実行

削除したいコメントがあるファイルのIDとコメントIDを指定します。

コメントIDが自身のコメントではない場合は削除されません。
削除に失敗した場合のみ例外を出力します。

public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Files files = drive.files();
    
    Drive.Files.Delete delete = files.delete("ファイルID");
    
    delete.execute();
}

6.2.1. HTTPリクエスト

DELETE: https://www.googleapis.com/drive/v3/files/{ファイルID}
が実行されます。

6.2.2. クエリパラメータ

Drive.Files.Deleteのsetメソッドにより、クエリパラメータを追加できます。

メソッド 引数 説明
setSupportsAllDrives Boolean 要求元のアプリケーションがマイドライブと共有ドライブの両方をサポートしているか

6.2.3. リクエストボディ

リクエストボディはありません。

6.3. レスポンスの内容

成功した場合は何も返しません。
失敗した場合は例外を出力します。

7. Google DriveでサポートされるMimeType

Google DriveでサポートされるMimeType一覧です。

MimeType 説明
application/vnd.google-apps.audio
application/vnd.google-apps.document Googleドキュメント
application/vnd.google-apps.drive-sdk サードパーティのショートカット
application/vnd.google-apps.drawing Google 図形描画
application/vnd.google-apps.file Googleドライブファイル
application/vnd.google-apps.folder Googleドライブフォルダ
application/vnd.google-apps.form Googleフォーム
application/vnd.google-apps.fusiontable Google フュージョン テーブル
application/vnd.google-apps.jam Google Jamboard
application/vnd.google-apps.mail-layout Email layout
application/vnd.google-apps.map Googleマイマップ
application/vnd.google-apps.photo Googleフォト
application/vnd.google-apps.presentation Google スライド
application/vnd.google-apps.script Google Apps スクリプト
application/vnd.google-apps.shortcut Google Shortcut
application/vnd.google-apps.site Google サイト
application/vnd.google-apps.spreadsheet Google スプレッドシート
application/vnd.google-apps.unknown
application/vnd.google-apps.video

8. よく使うMimeType

よく使いそうなMimeTypeを一覧にまとめました。

ここにない拡張子のMimeTypeは、IANAの公式なサイトから探してください。
https://www.iana.org/assignments/media-types/media-types.xhtml

種類 MimeType 拡張子
AVI: Audio Video Interleave video/x-msvideo .avi
ビットマップ画像 image/bmp .bmp
カスケーディングスタイルシート (CSS) text/css .css
カンマ区切り値 (CSV) text/csv .csv
Microsoft Word application/msword .doc
Microsoft Word (OpenXML) application/vnd.openxmlformats-officedocument.wordprocessingml.document .docx
グラフィック交換形式 (GIF) image/gif .gif
ハイパーテキストマークアップ言語 (HTML) text/html .htm .html
アイコン形式 image/vnd.microsoft.icon .ico
Java Archive (JAR) application/java-archive .jar
JPEG 画像 image/jpeg .jpeg .jpg
JavaScript text/javascript .js
JSON 形式 application/json .json
MP3 音声 audio/mpeg .mp3
MPEG 動画 video/mpeg .mpeg
OpenDocuemnt プレゼンテーション文書 application/vnd.oasis.opendocument.presentation .odp
OpenDocuemnt 表計算文書 application/vnd.oasis.opendocument.spreadsheet .ods
OpenDocument テキスト文書 application/vnd.oasis.opendocument.text .odt
Portable Network Graphics image/png .png
Adobe Portable Document Format (PDF) application/pdf .pdf
Microsoft PowerPoint application/vnd.ms-powerpoint .ppt
Microsoft PowerPoint (OpenXML) application/vnd.openxmlformats-officedocument.presentationml.presentation .pptx
リッチテキスト形式 (RTF) application/rtf .rtf
Scalable Vector Graphics (SVG) image/svg+xml .svg
テキストファイル (一般に ASCII or ISO 8859-n) text/plain .txt
Waveform 音声形式 audio/wav .wav
Microsoft Excel application/vnd.ms-excel .xls
Microsoft Excel (OpenXML) application/vnd.openxmlformats-officedocument.spreadsheetml.sheet .xlsx


おしまい。。
0
0
0

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