【问题标题】:Create new sheet in Google sheet document在 Google 工作表文档中创建新工作表
【发布时间】:2016-12-27 09:22:45
【问题描述】:

我想使用 Java API v4 在谷歌工作表文档中创建新工作表。我测试了这段代码:

        Sheets service = getSheetsService();

        Spreadsheet sheet = new Spreadsheet();
        SpreadsheetProperties properties = new SpreadsheetProperties();
        properties.setTitle("new SpreadSheetTitle");
        sheet.setProperties(properties);

        Spreadsheet response = service.spreadsheets().create(sheet)
            .execute();

但是当我打开文档时,我没有看到新页面。实现这一点的正确方法是什么?

附言

我设法创建了这个:

List<List<Object>> writeData = new ArrayList<>();

        List<Object> dataRow = new ArrayList<>();
        dataRow.add("data 1 " + timestamp);
        dataRow.add("data 2 " + timestamp);
        dataRow.add("data 3 " + timestamp);
        dataRow.add("data 4 " + timestamp);
        dataRow.add("data 5 " + timestamp);
        writeData.add(dataRow);

        requests.add(new Request().setAddSheet(new AddSheetRequest()
            .setProperties(new SheetProperties().setTitle("scstc"))));


        BatchUpdateSpreadsheetRequest body
            = new BatchUpdateSpreadsheetRequest().setRequests(requests);
        BatchUpdateSpreadsheetResponse response = service.spreadsheets().batchUpdate(spreadsheetId, body).execute();

我可以创建空白工作表,但如何插入测试数据?

【问题讨论】:

  • 从 API 中可以看出,SpreadSheet 包含 Sheet 的列表。当您打开一个文档时,默认情况下您总是查看该文档的第一个 Sheet。如果您的文档没有Sheet,则没有什么可看的。我没有看到您实际上将新的Sheet 添加到sheet,这可能就是您看到一个空文档的原因。见developers.google.com/sheets/api/reference/rest/v4/spreadsheets
  • 你能给我看一下代码示例吗?
  • @Peter_Penzov developers.google.com/sheets/api/guides/batchupdate#example 此外,下一步可能是首先创建实际文档。有关这方面的更多帮助,请参阅此答案:stackoverflow.com/questions/19361814/…
  • 您确定我可以在这些示例中使用 v4 API 吗?
  • 我给你的第一个链接(我的第二条评论)重定向到官方 V4 API 文档,所以我当然希望如此!

标签: java google-sheets google-spreadsheet-api


【解决方案1】:

您在文档中创建了一个新选项卡 如果你想在创建的时候添加一些列,你可以这样做:

ValueRange appendBody = new ValueRange()
                .setValues(Collections.singletonList(
                        Arrays.asList("ColumnName1", "ColumnName2")));

getSheetsService().spreadsheets().values()
                .append(SPREADSHEET_ID, "TITLE_OF_YOUR_NEW_TAB", appendBody)
                .setValueInputOption("USER_ENTERED")
                .setInsertDataOption("INSERT_ROWS")
                .setIncludeValuesInResponse(true)
                .execute();

此代码只是将数据插入到名为“TITLE_OF_YOUR_NEW_TAB”的新标签中

public Sheets getSheetsService() throws IOException, GeneralSecurityException {
        Credential credential = authorize();
        return new Sheets.Builder(GoogleNetHttpTransport.newTrustedTransport(), JSON_FACTORY, credential)
                .build();
    }

【讨论】:

  • 它不会添加新标签(工作表)。它将值添加到现有
【解决方案2】:

如果您想更新或附加数据到电子表格内的现有工作表(选项卡),您可以使用以下内容进行更新:

sheetsService.spreadsheets()
                    .values()
                    .update(spreadsheetId, "NAME_OF_EXISTING_SPREADSHEET", body)
                    .execute();

或者这个用于追加:

sheetsService.spreadsheets()
                    .values()
                    .append(spreadsheetId, "NAME_OF_EXISTING_SPREADSHEET", body)
                    .execute();

仅当工作表(标签)已创建时才有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 2020-12-13
    相关资源
    最近更新 更多