如何使用脚本显示/隐藏 Google 表格中的行?

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

我正在尝试制作日历。如果有人在 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
}}}
google-sheets google-apps-script
1个回答
0
投票

几点见解:

  • 你的函数的这两个版本是不同的吗?您的代码并不完全清楚。
  • 我不确定你所说的
    row.isHidden()
    row.setHidden()
    等是什么意思;但这些方法并不存在。或者更确切地说,它们不是这样命名的:
    isRowHiddenByFilter(rowNumber)
    showRows(rowNumber, numberOfRows)
    hideRows(rowNumber, numberOfRows)
    确实存在于 Sheet 类中。
  • 您无需循环遍历行,因为您可以直接(取消)隐藏整个行范围。
  • 我强烈建议您使用行号(如函数的第二个版本中所示)而不是 A1 表示法。

我建议您阅读文档:文档

以下是您想要做的事情的概述:

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);
  }
} 
© www.soinside.com 2019 - 2024. All rights reserved.