2

Play Framework アプリケーションで Google Drive API ライブラリを使用しています。

チームドライブを検索し、フォルダーが存在するかどうかを確認し、存在しない場合はフォルダーを作成しようとしています。FileListの前に オブジェクトを使用してTeamDriveListいましたが、 を使用するFileListと、チーム ドライブにフォルダーが存在していても常に作成されていました。既存のフォルダーは決して見つかりませんでした。フォルダを何度も複製します。

したがって、いくつかの投稿を読んだ後:

チーム ドライブ ファイルを反復処理する Google Drive API JAVA

Google Drive API - 重複するフォルダを作成する

に切り替える必要があったようですTeamDriveList

Google のドキュメントでこの例を使用しています: https://developers.google.com/drive/v3/web/manage-teamdrives#managing_team_drives_for_domain_administrators

ご覧のとおりsetQ、検索を実行するために使用します。

TeamDriveList result = driveService.teamdrives().list()
      .setQ("organizerCount = 0")
      .setFields("nextPageToken, teamDrives(id, name)")
      .setUseDomainAdminAccess(true)
      .setPageToken(pageToken)
      .execute();

ただし、私のコードでは、コンパイルしようとすると、setQ存在しないエラーがスローされます。

これが私のコードです:

public static String getSubfolderID(Drive service, String parentFolderID, String folderKeyToGet) {
    // We need to see if the folder exists based on the ID...
    String folderID = "";
    Boolean foundFolder = false;
    TeamDriveList result = null;
    File newFolder = null;

    // Set the drive query...
    String driveQuery = "mimeType='application/vnd.google-apps.folder' and '" + parentFolderID
            + "' in parents and name contains '" + folderKeyToGet
            + "' and trashed=false";

    try {
        result = service.teamdrives().list()
                .setQ(driveQuery)
                .execute();
    } catch (IOException e) {
        e.printStackTrace();
    }
    for (TeamDrive folder : result.getTeamDrives()) {
        System.out.printf("Found folder: %s (%s)\n", folder.getName(), folder.getId());
        foundFolder = true;
        folderID = folder.getId();
    }
    if (foundFolder != true) {
        // Need to create the folder...
        File fileMetadata = new File();
        fileMetadata.setName(folderKeyToGet);
        fileMetadata.setTeamDriveId(parentFolderID);
        fileMetadata.set("supportsTeamDrives", true);
        fileMetadata.setMimeType("application/vnd.google-apps.folder");
        fileMetadata.setParents(Collections.singletonList(parentFolderID));

        try {
            newFolder = service.files().create(fileMetadata)
                    .setSupportsTeamDrives(true)
                    .setFields("id, parents")
                    .execute();
        } catch (IOException e) {
            e.printStackTrace();
        }
        // Send back the folder ID...
        folderID = newFolder.getId();
        System.out.println("Folder ID: " + newFolder.getId());
    }

    return folderID;
}

問題のコード行は次のとおりです。

    result = service.teamdrives().list()
            .setQ(driveQuery)
            .execute();

これが存在しない場合、次のクエリを使用して検索するにはどうすればよいですか。

String driveQuery = "mimeType='application/vnd.google-apps.folder' and '" + parentFolderID
        + "' in parents and name contains '" + folderKeyToGet
        + "' and trashed=false";

探しているフォルダーの場合、重複が発生しないようにフォルダーを見つけてください。

助けに感謝します。

4

0 に答える 0