我正在使用此Java代码从Java应用程序生成Google表格数据。

List < RowData > rowDataValues = new ArrayList < > ();

List < CellData > headerValues = new ArrayList < > ();
headerValues.add(new CellData().setNote("ID")
    .setUserEnteredValue(new ExtendedValue()
        .setStringValue("#")).setUserEnteredFormat(myFormat));
.setStringValue("Environment")).setUserEnteredFormat(myFormat));

.........

headerValues.add(new CellData()
    .setUserEnteredValue(new ExtendedValue()
        .setStringValue("Name")).setUserEnteredFormat(myFormat));
RowData setHeaderValues = new RowData();
setHeaderValues.setValues(headerValues);
rowDataValues.add(setHeaderValues);

requests.add(new Request()
    .setUpdateCells(new UpdateCellsRequest()
        .setStart(new GridCoordinate()
            .setSheetId(randomSheetId)
            .setRowIndex(0)
            .setColumnIndex(0))
        .setRows(rowDataValues)
        .setFields("*")));

BatchUpdateSpreadsheetRequest body = new BatchUpdateSpreadsheetRequest().setRequests(requests);

BatchUpdateSpreadsheetResponse response = service.spreadsheets().batchUpdate(spreadsheetId, body).execute();


如何为每列设置自定义宽度?

更新:

到目前为止,这是我尝试过的:

new UpdateDimensionPropertiesRequest().setRange(
        new DimensionRange()
        .setDimension("COLUMNS")
        .setStartIndex(0).setEndIndex(1)
    )
    .setProperties(new DimensionProperties().setPixelSize(400)).setFields("pixelSize"));

最佳答案

您需要创建UpdateDimensionPropertiesRequest。在您的情况下,您可以使用此示例代码,这会增加第一列(startIndex = 0, endIndex = 1)的大小。

requests.add(new Request().setUpdateDimensionProperties(
    new UpdateDimensionPropertiesRequest()
    .setRange(
        new DimensionRange()
        .setSheetId(randomSheetId)
        .setDimension("COLUMNS")
        .setStartIndex(0)
        .setEndIndex(1)
)
.setProperties(new DimensionProperties().setPixelSize(400)).setFields("pixelSize"))));


在这里,我使用setDimension("COLUMNS")来更改列的宽度,可以通过使用setDimension("ROWS")来更改行的高度。



@PeterPenzov 's comment的其他问题:


  我收到“无效的requests.updateDimensionProperties:ID为0的无网格”,


如果您的sheetId设置不正确,则会收到此错误。

根据API v4文档,SheetId是;


  电子表格中的各个工作表具有标题(必须唯一)和ID。在Sheets API中经常使用sheetId来指定要读取或更新的工作表


因此,您需要设置sheetId对象的DimensionRange。在您的情况下,您需要将sheetId用作randomSheetId(我已经更新了上面的代码)。

Spreadsheet spreadsheet = service.spreadsheets().get(spreadsheetId).execute();
spreadsheet.getSheets().stream()
                       .map(s->s.getProperties().getSheetId())
                       .forEach(System.out::println);

10-06 04:40