2017-06-17 102 views
1

我的Java Google Sheet API方法可自動調整Google工作表的尺寸大小,但只能在默認工作表上有gid = 0。識別Google表格的特定spreadsheetId可以有多個選項卡,每個選項卡都有一個特定的gid如何爲指定的Google工作表自動調整尺寸

當我自動調整尺寸時,我希望僅針對特定工作表使用不同的gid而不是gid = 0。我該如何調整我的代碼才能發生?

public static void setAutoResizeDimensions(String spreadsheetId, int startindex, int endindex) throws IOException { 

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

    AutoResizeDimensionsRequest autoResizeDimensions = new AutoResizeDimensionsRequest(); 
    DimensionRange dimensions = new DimensionRange().setDimension("COLUMNS").setStartIndex(startindex).setEndIndex(endindex); 

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


    BatchUpdateSpreadsheetRequest batchUpdateRequest = new BatchUpdateSpreadsheetRequest() 
      .setRequests(requests); 
    SHEETS.spreadsheets().batchUpdate(spreadsheetId, batchUpdateRequest) 
      .execute(); 
} 
我目前使用以下版本

 <dependency> 
      <groupId>com.google.apis</groupId> 
      <artifactId>google-api-services-sheets</artifactId> 
      <version>v4-rev21-1.22.0</version> 
     </dependency> 

問候, 康特

回答

0

您可以通過檢查每個表,並確認獲得GID如果這是必須的表通過查看標題或任何字段值進行修改: 您可以通過以下方式進行修改:

Get get = SHEETS.Spreadsheets.get(spreadsheetId); 
Spreadsheet file = sheets.execute(); 
Sheet sheetToUpdate=null; 
for(Sheet sheet: file.getSheets()){ 
    int index = sheet.getProperties().getIndex(); 
    //if this is the sheet you want to update 
    sheetToUpdate = sheet; 
} 
int gid = sheetToUpdate.getProperties.getSheetId(); 

一旦你有了gid,你可以使用更新塊中的代碼來更新電子表格中的特定工作表。

更新:

如果你知道GID可以通過GID作爲參數作爲

DimensionRange dimensions = new DimensionRange().setDimension("COLUMNS") 
.setStartIndex(0).setEndIndex(2).setSheetId(gidNum); 
+0

,,,我想要的代碼了你在這裏使用的版本..我目前在V4-rev21-1.22.0 – conteh

+0

,,我升級到版本v4-rev476-1.22.0仍然沒有看到file.getSheets()方法..將嘗試最新版本.. – conteh

+0

我升級到最新版本v4-rev478-1.22.0仍然沒有看到getSheets()方法。我在Spreadsheet file = Sheets.Spreadsheets.Get(spreadsheetId);上獲取「不兼容的類型:Sheets.Spreadsheets.Get無法轉換爲Spreadsheet」。 – conteh

0

autoResizeColumn(columnPosition)查看here

設置給定列的寬度以適應其內容

 var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheets()[0]; 

    sheet.getRange('a1').setValue('Whenever it is a damp, drizzly November in my soul...'); 

// Sets the first column to a width which fits the text 
sheet.autoResizeColumn(1); 

您可以將其與激活信息here結合起來,瞭解如何按名稱獲取工作表。

// This example assumes there is a sheet named "first" 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var first = ss.getSheetByName("first"); 
first.activate(); 

您可以使用getLastRow()getLastColumn()擴大範圍到所有的表數據。 如果你願意的話,最後結合getA1Notation()。但所有的數值也適用於範圍。見下文。

因此,我們最終像這樣的東西。:

var ssa = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ssa.getSheetByName(name); 
var lastCol = sheet.getLastColumn(); 
var lastRow = sheet.getLastRow(); 
var range = sheet.getRange(1,1, lastCol, lastRow); 
range.Activate(); 
for (i = 1; i <= lastCol;i++) { 
    sheet.autoResizeColumn(i); 
}