首页 > 解决方案 > 调整第 3 行的高度和工作表底部(工作表中的行数不断变化)[Google Sheets]

问题描述

我想要达到的目标:

这不会发生。任何人都可以就为什么提供建议吗?

我的脚本:

function onEdit(e)  {

 // This if-statement ensures the macro only runs when the checkbox in cell C1 is used.
 if (
   e.source.getSheetName() == "Meals" &&
   e.range.getColumn() == 3 &&
   e.range.getRow() == 1
 ) { 

   var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
   var Meals = spreadsheet.getSheetByName("Meals");
   var LastRow = Meals.getLastRow();

   var checkboxtest = e.range.getValue()     // This variable is used in the if-statement below, to see if the checkbox was checked or unchecked.

   if (checkboxtest == true) {               // If checkbox is checked...
     Meals.autoResizeRows(3, LastRow-2);     // set the row heights to auto-adjust.
   }else{                                    // If checkbox is unchecked...
     Meals.setRowHeights(3, LastRow-2, 21);  // set the row heights equal to 21.
   }
 }
}

标签: google-apps-scriptgoogle-sheetsgoogle-sheets-macros

解决方案


  • When the checkbox at the cell "C1" is checked, you want to run the auto resize of the row height from row 3 to the bottom row.
  • 当单元格“C1”的复选框未选中时,您希望将行高设置为从第 3 行到底行的 21 个像素。
  • 您想在复选框更改时运行脚本。

问题和解决方法:

在这种情况下,当使用电子表格服务时,可以完成行的自动调整大小。但不幸的是,setRowHeights()不能用于这种情况。我也认为这是由于ADW 的评论中提到的一个错误。

因此,在这个答案中,作为一种解决方法,我想建议使用 Sheets API 的 batchUpdate 方法来实现您的目标。

当您的脚本被修改时,请进行如下修改。

用法:

  1. 请按如下方式修改您的脚本。
  2. 在您使用此脚本之前,请安装可安装的 OnEdit 事件触发器到installedOnEdit已修改的功能。因为 Sheets API 不能与简单触发器一起使用。
  3. 请在 Advanced Google services 中启用 Sheets API
  4. 作为测试,请取消选中单元格“C1”的复选框。

修改后的脚本:

从:

function onEdit(e)  {

至:

function installedOnEdit(e)  {

从:

Meals.setRowHeights(3, LastRow-2, 21);

至:

const requests = {updateDimensionProperties: {
  properties: {pixelSize: 21},
  range: {dimension: "ROWS", sheetId: Meals.getSheetId(), startIndex: 2},
  fields: "pixelSize"
}};
Sheets.Spreadsheets.batchUpdate({requests: requests}, spreadsheet.getId());
  • 安装的功能installedOnEdit并启用 Sheets API 后,未选中该复选框时,行高更改为 21 像素。

参考:


推荐阅读