我正在尝试制作日历。如果有人在 1 月按下某个形状,我希望隐藏第 2-37 行;如果有人在 2 月按下形状,则隐藏第 39-74 行,等等。脚本也应该考虑到工作表。因此,它仅隐藏活动工作表上的第 2-37 行,而不隐藏其旁边的工作表。
链接或复选框比形状更好,但不确定这是否可能。
当前尝试
function toggleRowVisibility(startRow, endRow) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
for (var i = startRow; i <= endRow; i++) {
var row = sheet.getRange(i + ':' + i);
if (row.isHidden()) {
row.setHidden(false); // Unhide the row if it's currently hidden
} else {
row.setHidden(true); // Hide the row if it's currently visible
}
}} toggleRowVisibility('2:37');
function toggleRows() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
for (var i = 2; i <= 37; i++) {
var row = sheet.getRange(i, 1);
if (sheet.isRowHidden(i)) {
sheet.showRows(i); // If row is hidden, show it
} else {
sheet.hideRows(i); // If row is visible, hide it
}}}
几点见解:
row.isHidden()
、row.setHidden()
等是什么意思;但这些方法并不存在。或者更确切地说,它们不是这样命名的:isRowHiddenByFilter(rowNumber)
、showRows(rowNumber, numberOfRows)
和hideRows(rowNumber, numberOfRows)
确实存在于 Sheet 类中。我建议您阅读文档:文档。
以下是您想要做的事情的概述:
function toggleRowsVisibility(startRow, endRow) {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
if (sheet.isRowHiddenByUser(startRow)) {
sheet.showRows(startRow, endRow-startRow+1);
} else {
sheet.hideRows(startRow, endRow-startRow+1);
}
}