我想要达到的目标:
我在单元格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.
}
}
}
如果我的理解正确,那么这个答案如何?请认为这只是几个可能的答案之一。
在这种情况下,当使用电子表格服务时,可以自动调整行的大小。但不幸的是,setRowHeights()
无法用于这种情况。我也认为这是由于ADW's comment中提到的错误所致。
因此,在此答案中,作为一种解决方法,我建议使用Sheets API的batchUpdate方法来实现您的目标。
修改脚本后,请进行如下修改。
installedOnEdit
。因为Sheets API不能与简单触发器一起使用。installedOnEdit
。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像素。如果我误解了你的问题,而这不是你想要的方向,我深表歉意。