如何为命名的 google sheet 自动调整尺寸

How do I auto-resize dimensions for a named google sheet

我的 Java Google Sheet API 自动调整 Google sheet 尺寸的方法有效,但仅适用于默认 sheet 有 gid = 0。标识 Google Sheet 的特定 spreadsheetId 可以有多个选项卡,每个选项卡都有特定的 gid.

我希望在自动调整尺寸时仅针对 gidgid = 0 不同的特定 sheet。我该如何调整我的代码以实现这种情况?

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>

此致, 康特

您可以通过检查每个 sheet 并通过查看标题或任何字段值确认是否是必须修改的 sheet 来获取 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 后,您可以使用更新块中的代码更新 spreadsheet 中的特定 sheet。

更新:

如果您知道 gid,您可以将 gid 作为参数传递

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

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 以查看如何通过名称获取 sheet。

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

您可以使用 getLastRow() and getLastColumn() 将范围扩展到 sheet 中的所有数据。 如果你愿意,最后将它与 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);
 }