将数据插入新的Google表格

时间:2016-12-27 13:51:12

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

我想创建空工作表并插入一些数据。我测试了这段代码:

Sheets service = getSheetsService();

        // Fist create empty new sheet
        List<Request> requests = new ArrayList<>();

        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();

        // Second add data into new sheet
        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);

        ValueRange oRange = new ValueRange();
        oRange.setRange(range); //
        oRange.setValues(writeData);

        List<ValueRange> oList = new ArrayList<>();
        oList.add(oRange);

        BatchUpdateValuesRequest oRequest = new BatchUpdateValuesRequest();
        oRequest.setValueInputOption("RAW");
        oRequest.setData(oList);

        BatchUpdateValuesResponse oResp1 = service.spreadsheets().values().batchUpdate(spreadsheetId, oRequest).execute();

代码正在运行,但我有以下限制:

第一次批量调用创建空表。 第二批调用将测试数据插入到错误的表中,始终是第一个。

如何通过一次调用创建新工作表并插入数据?如果这不可能,我怎样才能将数据插入新表?

1 个答案:

答案 0 :(得分:1)

oRange.setRange(range); //缺少注释,说明该行的目的是什么。您没有任何将range分配给某个值的行,因此我不确定您的意思是什么。

如果要在新工作表中写入值,则需要使用range(这是您添加的工作表的标题)确保range = "scstc"指向该工作表。< / p>

或者,您可以在单个BatchUpdateSpreadsheet请求中执行所有操作,方法是在SheetProperties对象中指定sheetId,然后同时添加指向同一sheetId的UpdateCellsRequest { {1}}填写,因为你喜欢它。