回答了我自己的问题。在一次batchRequest调用中用新数据覆盖工作表很容易。您只需发送标识工作表的UpdateSheetPropertiesRequest并设置新的列和行数。将它们与具有新数据的UpdateCellsRequest一起批处理。下面是一些常规的代码来做到这一点:
// read CSV file into memory as list of RowData records
def numCols, numRows, rows
(numCols, numRows, rows) = makeRows(url)
// overwrite sheet with data
def requests = []
// update sheet properties
requests << new Request()
.setUpdateSheetProperties(new UpdateSheetPropertiesRequest()
.setFields('gridProperties(rowCount,columnCount)')
.setProperties(new SheetProperties()
.setSheetId(sheetId)
.setGridProperties(new GridProperties()
.setColumnCount(numCols)
.setRowCount(numRows))))
// overwrite sheet data
requests << new Request()
.setUpdateCells(new UpdateCellsRequest()
.setStart(new GridCoordinate()
.setColumnIndex(0)
.setRowIndex(0)
.setSheetId(sheetId))
.setRows(rows)
.setFields('*'))
// batch those requests
def body = new BatchUpdateSpreadsheetRequest()
.setRequests(requests)
def resp = sheets.spreadsheets()
.batchUpdate(id, body)
.execute()
这是假设你知道你要覆盖板的ID,但是这是很容易从电子表格属性发现。 – cbo3