调整第3行的高度并调整到工作表的底部(工作表中的行数不断变化的地方)[Google表格]

问题描述 投票:0回答:1

我想要达到的目标:

  • 我在单元格C1中有一个复选框。

  • 选中此选项后,我想调整第3行的行高,并向下调整到工作表的底部,以便它们自动调整大小以'适合数据'。

  • 未选中时,我想将第3行的行高调整到工作表底部至21。

不会发生。任何人都可以提出建议吗?

我的脚本:

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-script google-sheets google-sheets-macros
1个回答
0
投票
  • [单元格“ C1”上的复选框被选中时,您要运行从第3行到最下面一行的行高自动调整大小。
  • 当未选中单元格“ C1”上的复选框时,您希望将行高设置为从第3行到最下面一行的21像素。
  • 您想在更改复选框后运行脚本。

如果我的理解正确,那么这个答案如何?请认为这只是几个可能的答案之一。

问题和解决方法:

在这种情况下,当使用电子表格服务时,可以自动调整行的大小。但不幸的是,setRowHeights()无法用于这种情况。我也认为这是由于ADW's comment中提到的错误所致。

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

修改脚本后,请进行如下修改。

用法:

  1. 请按如下所示修改脚本。
  2. 使用此脚本之前,已修改please install the installable OnEdit event trigger to the function of installedOnEdit。因为Sheets API不能与简单触发器一起使用。
  3. installedOnEdit
  4. 作为测试,请取消选中单元格“ C1”的复选框。

修改的脚本:

发件人:

Please enable Sheets API at Advanced Google services

收件人:

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()); 的功能并启用了Sheets API之后,如果取消选中该复选框,则行高将更改为21像素。

参考:

如果我误解了你的问题,而这不是你想要的方向,我深表歉意。

© www.soinside.com 2019 - 2024. All rights reserved.