LoginSignup
2
0

[Google Drive API v3] Javaでユーザーや共有ドライブ、ファイルの変更履歴を取得する

Posted at

Google Drive API v3(Java)を使用して、
Driveに格納されているファイルの変更履歴を取得する方法
についてご紹介します。

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

No 目次
1 変更履歴の開始トークンを取得
1 スコープ
2 実行
3 レスポンスの内容
2 変更履歴リストを取得
1 スコープ
2 実行
3 レスポンスの内容

1. 変更履歴の開始トークンを取得

変更履歴の開始トークンを取得します。
この開始トークンは変更履歴リストを取得する際に必要になります。

2. 変更履歴リストを取得で取得できる変更履歴は、
この開始トークンを取得した時点を開始とし、それ以降に変更された内容になります。

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. 実行

public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Changes changes = drive.changes();
    
    Drive.Changes.GetStartPageToken token = changes.getStartPageToken();
    
    StartPageToken res = token.execute();
    System.out.println(res);
}

1.2.1. HTTPリクエスト

GET: https://www.googleapis.com/drive/v3/changes/startPageToken
が実行されます。

1.2.2. クエリパラメータ

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

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

1.3. レスポンスの内容

StartPageToken

メソッド 戻り値 説明
getStartPageToken String 開始トークン
getKind String リソースの種類
固定文字列:"drive#startPageToken"

2. 変更履歴リストを取得

2.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インスタンスを取得)
でスコープを指定してください。

2.2. 実行

変更履歴リストを取得するには開始トークンを指定します。
開始トークンを取得した時点から後の変更履歴が取得できます。
開始トークンの取得は、1. 変更履歴の開始トークンを取得を参照ください。

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

レスポンスのgetNextPageTokenがNULLではない場合、
全てのリストが取得できていません。
クエリパラメータのsetPageTokenに取得できた値を設定し、
再度APIを実行します。

public static void main(String[] args) throws Exception{
    Drive drive = getDrive();
    Drive.Changes changes = drive.changes();
    
    Drive.Changes.List list = changes.list("開始トークン");
    list.setFields(*);
    
//レスポンスのgetNextPageTokenがNULLではない場合
//labels.setPageToken("レスポンスのgetNextPageToken");

    ChangeList res = list.execute();
    System.out.println(res);
}

2.2.1. HTTPリクエスト

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

2.2.2. クエリパラメータ

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

メソッド 引数 説明
setPageSize Integer ページごとに返される変更の最大数
setPageToken String 次のページで前のリスト要求を継続するためのトークン
レスポンスのgetNextPageTokenで取得が可能
setDriveId String 変更が返される共有ドライブID
setIncludeCorpusRemovals Boolean 削除されたファイルも対象にするか
setIncludeItemsFromAllDrives Boolean マイドライブと共有ドライブの両方を含めるか
setIncludeRemoved Boolean 削除やアクセスの喪失などによって項目が変更リストから削除されたことを示す変更を含めるか
setRestrictToMyDrive Boolean 結果をマイドライブ階層内の変更に制限するか
setSpaces String spaceのカンマ区切りのリスト
drive、appDataFolderのみ
setSupportsAllDrives Boolean 要求元のアプリケーションがマイドライブと共有ドライブの両方をサポートしているか

space

定義値 内容
drive Googleドライブ内
appDataFolder アプリのデータフォルダ
photos Googleフォト内

2.3. レスポンスの内容

ChangeList

フィールド メソッド 戻り値 説明
kind getKind String リソースの種類
固定文字列:"drive#changeList"
nextPageToken getNextPageToken String 次のページのページトークン
リストの最後の場合はNULL
newStartPageToken getNewStartPageToken String 開始トークン
changes getChanges List<Change> 変更のリスト

Change

メソッド 戻り値 説明
getKind String リソースの種類
固定文字列:"drive#change"
getRemoved Boolean ファイルまたは共有ドライブが、削除またはアクセスの喪失などによって、この変更リストから削除されたか
getFile File ファイルの更新された状態
getFileId String 変更されたファイルのID
getTime String この変更の時刻
getDriveId String この変更に関連付けられた共有ドライブのID
getChangeType String 変更の種類
file か drive
getDrive Drive 共有ドライブの更新された状態

File

⧉[Google Drive API v3] JavaでDriveのファイルの情報を取得する(File)
を参照ください。

Drive

⧉[Google Drive API v3] Javaで共有ドライブの情報を取得する(Drive)

を参照ください。



おしまい。。
2
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
2
0