如何为指定的Google工作表自动调整尺寸

时间:2017-06-17 09:51:05

标签: java google-api-java-client

我的Java Google Sheet API方法可以自动调整Google工作表的尺寸,但只能在gid = 0的默认工作表上使用。标识Google表格的特定spreadsheetId可以包含多个标签,每个标签都包含特定的gid

我希望在自动调整维度大小时,只定位与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>

此致 康特

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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);
 }