2017-06-17 180 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); 
}