google-apps-script - 调整第 3 行的高度和工作表底部(工作表中的行数不断变化)[Google Sheets]
问题描述
我想要达到的目标:
我在单元格 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.
}
}
}
解决方案
- 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 方法来实现您的目标。
当您的脚本被修改时,请进行如下修改。
用法:
- 请按如下方式修改您的脚本。
- 在您使用此脚本之前,请安装可安装的 OnEdit 事件触发器到
installedOnEdit
已修改的功能。因为 Sheets API 不能与简单触发器一起使用。 - 请在 Advanced Google services 中启用 Sheets API。
- 作为测试,请取消选中单元格“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 像素。
参考:
推荐阅读
- javascript - Angular 2+ 的 xeditable 的替代品
- c# - Stop Driver Process after - session not created: 此版本的 ChromeDriver 仅支持 Chrome 版本
- javascript - 如何将我的选择列表、单选和复选框加起来?
- multithreading - JavaFXML 后台进程完成后,我想隐藏启动画面并显示主场景
- javascript - 创建时间戳数组删除开始和结束期间之间的小时数
- python - 如何顺序链接 ML 模型/管道模型?
- javascript - 返回数组中最大数的函数
- excel - 列出没有宏或 Excel 4 函数的工作表名称
- angular - flatMap GET 和 PUT 请求不返回结果
- jenkins-pipeline - 使用 readFile 从文件中读取数据并将其转换为 groovy 中的列表的最佳方法是什么?