Java Google 工作表 API autoResizeDimensionsRequest 示例

Java Google Sheets API example with autoResizeDimensionsRequest

我想知道如何使用 autoResizeDimensions 将列设置为自动调整大小。以下

List<Request> requests = new ArrayList<>();

        AutoResizeDimensionsRequest autoResizeDimensions = new AutoResizeDimensionsRequest();
        requests.add(new Request()
                .setAutoResizeDimensions(autoResizeDimensions));
        BatchUpdateSpreadsheetRequest batchUpdateRequest = new BatchUpdateSpreadsheetRequest()
                .setRequests(requests);
        SHEETS.spreadsheets().batchUpdate(spreadsheetId, batchUpdateRequest)
                .execute();

returns下面的错误信息

com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
  "code" : 400,
  "errors" : [ {
    "domain" : "global",
    "message" : "Invalid requests[1].autoResizeDimensions: Only the COLUMNS dimension is supported",
    "reason" : "badRequest"
  } ],
  "message" : "Invalid requests[1].autoResizeDimensions: Only the COLUMNS dimension is supported",
  "status" : "INVALID_ARGUMENT"

我也有兴趣为列设置特定的宽度。我还没有找到任何使用 java 的示例。如果有人遇到过或知道怎么会拒绝它。

此外,我已将 setDimensions 添加到该代码

DimensionRange dimensions = new DimensionRange().setDimension("A1:C6");

与 setAutoResizeDimensions

requests.add(new Request()
                .setAutoResizeDimensions(autoResizeDimensions
                        .setDimensions(dimensions)));

但我收到以下错误

com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
  "code" : 400,
  "errors" : [ {
    "domain" : "global",
    "message" : "Invalid value at 'requests[3].auto_resize_dimensions.dimensions.dimension' (TYPE_ENUM), \"A1:C6\"",
    "reason" : "badRequest"
  } ],
  "message" : "Invalid value at 'requests[3].auto_resize_dimensions.dimensions.dimension' (TYPE_ENUM), \"A1:C6\"",
  "status" : "INVALID_ARGUMENT"

谢谢 康特

失败都是同一个原因:AutoResizeDimensionRequest设置不当。

您需要在请求的 dimensions 字段中提供有效的 DimensionRange,以便请求知道要调整哪些尺寸。 DimensionRange 的文档描述了它的用途:A range along a single dimension on a sheet. All indexes are zero-based. Indexes are half open: the start index is inclusive and the end index is exclusive. Missing indexes indicate the range is unbounded on that side.

第一个错误 ("Invalid requests[1].autoResizeDimensions: Only the COLUMNS dimension is supported") 是因为请求使用默认值 DimensionRange,这意味着 DimensionRange.dimension 字段使用其默认值 DIMENSION_UNSPECIFIED。该字段是类型 Dimension 的枚举,其默认值为 DIMENSION_UNSPECIFIED。所以错误消息是说 "Only COLUMNS is supported" 并且隐含地说,“......但是你提供了 DIMENSION_UNSPECIFIED 或 ROWS”。

第二个错误 ("Invalid value at 'requests[3].auto_resize_dimensions.dimensions.dimension' (TYPE_ENUM), \"A1:C6\"") 是因为您在 dimension 字段中写入了 A1 范围。错误消息是:"You gave me an invalid value. I am an enum, but you gave me A1:C6, and that isn't a valid enum."

dimension 的有效值为 ROWSCOLUMNS(而 AutoResizeDimensionRequest 要求您指定 COLUMNS)。此外,您需要指定 sheetId(您要调整其列大小的 sheet 的 ID)以及您想要的列的 startIndexendIndex调整大小。

例如,如果您想自动调整第 0 行和第 1 行的大小,您可以使用: AutoResizeDimensionsRequest autoResizeDimensions = new AutoResizeDimensionsRequest(); DimensionRange dimensions = new DimensionRange().setDimension("COLUMNS").setStartIndex(0).setEndIndex(2); autoResizeDimensions.setDimensions(dimensions); endIndex2 因为结束索引是独占的,而开始索引是包含在内的。)