Google Drive API - как сделать подпапку на общем диске

Я разрабатываю небольшую систему, используя Google Drive API с JAVA, мне интересно узнать о TeamDrive API среди Google Drive APIs.

Первым делом я создал папку с общим диском,

Создать общий диск

public static void createTeamDrive(String accessToken) throws IOException {
    long startTime = System.currentTimeMillis();
    TeamDrive teamDriveMetadata = new TeamDrive();
    teamDriveMetadata.setName("Team Drive API Test");
    String requestId = UUID.randomUUID().toString();
    TeamDrive teamDrive = getDriveService(accessToken).teamdrives().insert(requestId, teamDriveMetadata).execute();
    System.out.println("[Create TeamDrive] execution time : " + (System.currentTimeMillis() - startTime));
}

а затем я поделился пользователем.

Поделиться пользователем

public static Permission ShareUser(String teamDriveFolderId, String googleMail, String accessToken) {
    long startTime = System.currentTimeMillis();
    Permission userPermission = new Permission().setRole("reader")
            .setType("user").setEmailAddress(googleMail)
            .setValue(googleMail).setWithLink(false);
    try {
        userPermission = getDriveService(accessToken).permissions().insert(teamDriveFolderId, userPermission)
                .setSupportsTeamDrives(true).execute();
        System.out.println(userPermission.toPrettyString());
    } catch (IOException e) {
        System.out.println(e);
    }
    System.out.println("[Give Permission] execution time : " + (System.currentTimeMillis() - startTime));
    return userPermission;
}

А затем я несколько раз пытался создать подпапку с помощью библиотеки google-drive, но мне не удалось создать подпапку постоянно.

Создать подпапку

public static void createSubFolder(String accessToken, String teamDriveFolderId) throws IOException {
    long startTime = System.currentTimeMillis();
    File fileMetaData = new File();
    fileMetaData.setTitle("SubFolder Title ");
    fileMetaData.setMimeType("application/vnd.google-apps.folder");
    fileMetaData.setTeamDriveId(teamDriveFolderId);
    fileMetaData.setParents(Arrays.asList(new ParentReference().setId(teamDriveFolderId)));
    fileMetaData.set("supportsTeamDrives", true);
    fileMetaData.set("fields", "id");
    File file = null;
    try {
        file = getDriveService(accessToken).files().insert(fileMetaData).execute();
        System.out.println(file.getId());
    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println("[Create Sub folder] execution time : " + (System.currentTimeMillis() - startTime));
}

Когда я вызываю createSubfolderFunction, я получаю такой ответ 404.

com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 Not Found
{
  "code" : 404,
  "errors" : [ {
    "domain" : "global",
    "location" : "file",
    "locationType" : "other",
    "message" : "File not found: 0AHGrQOmlzQZUUk9PVA",
    "reason" : "notFound"
  } ],
  "message" : "File not found: 0AHGrQOmlzQZUUk9PVA"
}
    at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:146)

'0AHGrQOmlzQZUUk9PVA' is the exact result from createTeamDrive function.

Я обратился к этому вопросу. введите здесь описание ссылки

Пожалуйста, посмотрите мой исходный код и укажите, что пошло не так.


person David    schedule 17.10.2017    source источник


Ответы (2)


Я сам обнаружил проблему, мне нужно добавить setSupportTeamDrive (true), когда я использую метод вставки.

 file = getDriveService(accessToken).files().insert(fileMetaData).setSupportsTeamDrives(true).execute();
person David    schedule 17.10.2017

У меня проблема с идентификатором вашей папки, проверяю, что идентификатор вашей родительской папки на диске Google правильный или нет $ folderId = '0AIuzzEYPQu9CUk9PVA'; Идентификатор присутствует в URL-адресе папки диска Google после открытия родительской папки

person user16380547    schedule 05.07.2021