2016-09-22 75 views
0

我想知道如何使用autoResizeDimensions爲了設置列自動調整大小。下面Java Google表格API示例autoResizeDimensionsRequest

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" 

感謝 康特

+0

什麼上面沒有按不工作? –

+0

@SamBerlin,我做了一些修改。希望它更清楚。 – conteh

回答

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。所以錯誤信息是說:「僅支持列」並隱含地說:「...但你提供了DIMENSION_UNSPECIFIED或ROWS」。

第二個錯誤("Invalid value at 'requests[3].auto_resize_dimensions.dimensions.dimension' (TYPE_ENUM), \"A1:C6\"")是因爲您在dimension字段中寫入了A1範圍。錯誤信息是:「你給了我一個無效值,我是一個枚舉,但你給了我A1:C6,這不是一個有效的枚舉。」

dimension的有效值爲ROWSCOLUMNS(並且AutoResizeDimensionRequest要求您指定COLUMNS)。另外,您需要指定sheetId(要調整大小的列的工作表的ID)以及要調整大小的列的startIndexendIndex

例如,如果你想自動調整行0和1,你可以使用: AutoResizeDimensionsRequest autoResizeDimensions = new AutoResizeDimensionsRequest(); DimensionRange dimensions = new DimensionRange().setDimension("COLUMNS").setStartIndex(0).setEndIndex(2); autoResizeDimensions.setDimensions(dimensions); endIndex2因爲最終指標是排他性的,而開始索引包含在內。)

+0

您可以在此處看到自動調整列大小的REST配方:https://developers.google.com/sheets/samples/rowcolumn#automatically_resize_a_column –