使用autoResizeDimensionsRequest

时间:2016-09-22 12:24:10

标签: google-sheets-api

我想知道如何使用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();

返回以下错误消息

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"

由于 康特

1 个答案:

答案 0 :(得分:1)

失败都源于同样的原因: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。因此错误消息是,&#34;仅支持COLUMNS&#34;并隐含地说,&#34; ...但你提供了DIMENSION_UNSPECIFIED或ROWS&#34;。

第二个错误("Invalid value at 'requests[3].auto_resize_dimensions.dimensions.dimension' (TYPE_ENUM), \"A1:C6\"")是因为您在dimension字段中写了一个A1范围。错误消息说:&#34;您给了我一个无效的值。我是一个枚举,但你给了我A1:C6,这不是一个有效的枚举。&#34;

dimension的有效值为ROWSCOLUMNSAutoResizeDimensionRequest要求您指定COLUMNS)。此外,您还要指定sheetId(要为其调整大小的列的ID)以及要调整大小的startIndexendIndex

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