我想创建空工作表并插入一些数据。我测试了这段代码:
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();
代码正在运行,但我有以下限制:
第一次批量调用创建空表。 第二批调用将测试数据插入到错误的表中,始终是第一个。
如何通过一次调用创建新工作表并插入数据?如果这不可能,我怎样才能将数据插入新表?
答案 0 :(得分:1)
行oRange.setRange(range); //
缺少注释,说明该行的目的是什么。您没有任何将range
分配给某个值的行,因此我不确定您的意思是什么。
如果要在新工作表中写入值,则需要使用range
(这是您添加的工作表的标题)确保range = "scstc"
指向该工作表。< / p>
或者,您可以在单个BatchUpdateSpreadsheet请求中执行所有操作,方法是在SheetProperties
对象中指定sheetId
,然后同时添加指向同一sheetId的UpdateCellsRequest
{ {1}}填写,因为你喜欢它。