Может создавать Документы Google, но не может создавать Google Sheets - PullRequest
2 голосов
/ 23 сентября 2019

Я создаю функцию в своем бэкэнде Java для создания Google Sheet.

Теперь в этом бэкэнде уже есть функция для создания Google Docs, и она работает хорошо.Ниже приведена функция для создания Google Doc.

  public String createFileFromHtml(Project project, String html) throws DocumentGatewayException {
// Determine the google drive ID for the given areaId
String areaId =
    Strings.isNullOrEmpty(project.getAreaId()) ? Constants.TEST_AREA : project.getAreaId();
String areaGoogleDriveId = null;
try {
  if (areaIdToGoogleDriveIdMap.isEmpty() || !areaIdToGoogleDriveIdMap.containsKey(areaId)) {
    String pageToken = null;
    do {
      String query = "'" + ERD_GOOGLE_DRIVE_ID + "' in parents";
      query += " and mimeType = '" + FOLDER_MIME_TYPE + "'";
      query += "and trashed = false";
      FileList result =
          drive
              .files()
              .list()
              .setQ(query)
              .setPageToken(pageToken)
              .setFields("nextPageToken, files(id, name)")
              .execute();
      for (File file : result.getFiles()) {
        areaIdToGoogleDriveIdMap.put(file.getName(), file.getId());
      }
      pageToken = result.getNextPageToken();
    } while (pageToken != null);
  }
} catch (IOException e) {
  throw new DocumentGatewayException(e);
}
areaGoogleDriveId = areaIdToGoogleDriveIdMap.get(areaId);
Preconditions.checkArgument(
    !Strings.isNullOrEmpty(areaGoogleDriveId), areaId + " needs to have a google drive folder");

// Generate metadata to be used to create the file using the google drive ID above.
File fileMetadata = new File();
fileMetadata.setName(project.getTitle());
fileMetadata.setMimeType("application/vnd.google-apps.document");
fileMetadata.setParents(Collections.singletonList(areaGoogleDriveId));

try {
  // Create file.
  File file =
      drive
          .files()
          .create(
              fileMetadata,
              new ByteArrayContent("text/html", html.getBytes(StandardCharsets.UTF_8)))
          .setFields("id")
          .execute();

  // Make all authors writers
  if (!project.getAuthorIds().isEmpty()) {
    for (String authorId : project.getAuthorIds()) {
      processor.setWritter(project.getUuid(), file.getId(), authorId, 0);
    }

    // Set owner
    String authorId = EmailUtils.AuthorNameToEmail(project.getAuthorIds().get(0));
    processor.setOwner(project.getUuid(), file.getId(), authorId, 0);
  }
  // Set commenter
  processor.setCommenter(project.getUuid(), file.getId(), 0);

  return file.getId();
} catch (IOException e) {
  logger.error(
      "Error creating document", KeyValue.string("project_uuid", project.getUuid()), e);
  throw new DocumentGatewayException(e);
}

}

Вместо этого я хотел создать Google Sheet.Поэтому я попытался изменить application/vnd.google-apps.document на application/vnd.google-apps.spreadsheet.Но после этого изменения он все еще создавал Google Doc вместо Google Sheet.

Так что кто-нибудь знает почему?Мне просто нужно создать Google Sheet.

Версия API Google Drive: google-api-services-drive-v3-rev130-1.25.0

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...