自动调整多个 google sheet 的整行大小

resize the entire rows automatically of multiple google sheet

如何将所有 google 页的整行调整为 21 高度(我有大约 10 张),我一直在尝试使用以下代码,但它不起作用。

我有下面的代码,它根据字符串调整行的大小,但不会将其调整到高度 21。

function resizeAllrows () {
  var sheet = SpreadsheetApp.getActiveSheet();
  var dataRange = sheet.getDataRange();
  var firstrow = dataRange.getRow();
  var lastrow = dataRange.getLastrow();
  sheet.autoResizeRows(firstrow, lastrow);
}

请看下面的图片,上面的代码不起作用。非常感谢您的帮助。

没有高级 google 服务的选项。

修改点:

  • 在你的脚本中,我认为getLastrow的咒语需要修改为getLastRow
  • 但是,从 but does not resize it to the Height 21. 开始,当字体较大 and/or 时,多个带有换行符的文本被放入一个单元格中,即使 autoResizeRowssetRowHeights 时,行高似乎取决于字体大小和所有文本高度。这似乎是当前的规范。所以,当你想针对这种情况强行把行高改为21像素时,就需要使用SheetsAPI。
    • 可在 this thread.
    • 处查看示例脚本

当以上几点反映到你的脚本中,就会变成下面这样。

修改后的脚本:

在使用此脚本之前,please enable Sheets API at Advanced Google services

function resizeAllrows() {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getActiveSheet();
  var resource = {
    requests: [{
      updateDimensionProperties: {
        properties: { pixelSize: 21 },
        range: { sheetId: sheet.getSheetId(), dimension: "ROWS" },
        fields: "pixelSize"
      }
    }
    ]
  };
  Sheets.Spreadsheets.batchUpdate(resource, ss.getId());
}

注:

  • 当您想对活动Google电子表格中的所有工作表使用上述脚本时,您还可以使用以下脚本。

      function resizeAllrows() {
        var ss = SpreadsheetApp.getActive();
        var requests = ss.getSheets().map(sheet => {
          return {
            updateDimensionProperties: {
              properties: { pixelSize: 21 },
              range: { sheetId: sheet.getSheetId(), dimension: "ROWS" },
              fields: "pixelSize"
            }
          }
        });
        Sheets.Spreadsheets.batchUpdate({ requests: requests }, ss.getId());
      }
    
  • 当你想对特定的工作表使用上面的脚本时,你也可以使用下面的脚本。

      function resizeAllrows() {
        var sheetNames = ["Sheet1", "Sheet2",,,]; // Please set the sheet names.
        var ss = SpreadsheetApp.getActive();
        var requests = ss.getSheets().reduce((ar, sheet) => {
          if (sheetNames.includes(sheet.getSheetName())) {
            ar.push({
              updateDimensionProperties: {
                properties: { pixelSize: 21 },
                range: { sheetId: sheet.getSheetId(), dimension: "ROWS" },
                fields: "pixelSize"
              }
            });
          }
          return ar;
        }, []);
        Sheets.Spreadsheets.batchUpdate({ requests: requests }, ss.getId());
      }
    

参考文献: