要保护一个范围免受取消隐藏的影响,但仍允许编辑,可以使用Google Apps脚本中的保护范围功能。以下是一个示例解决方案:
function protectRangeFromUnhiding() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange('A1:B10');
// 创建一个新的保护范围,允许编辑但防止取消隐藏
var protection = range.protect().setDescription('保护范围');
// 设置保护范围的编辑权限,允许所有用户编辑
var me = Session.getEffectiveUser();
protection.addEditor(me);
protection.setWarningOnly(true); // 可选,当用户尝试取消隐藏时显示警告
// 设置保护范围的取消隐藏权限,禁止取消隐藏
var allRanges = sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (var i = 0; i < allRanges.length; i++) {
var otherRange = allRanges[i].getRange();
if (otherRange.getA1Notation() !== range.getA1Notation()) {
allRanges[i].setUnprotectedRanges([otherRange]);
}
}
}
在上述示例中,我们选择范围"A1:B10"来保护。我们创建了一个新的保护范围,并将其描述为"保护范围"。然后,我们设置了保护范围的编辑权限,允许当前用户编辑,同时禁止取消隐藏。
请根据您的具体需求调整示例代码中的范围和其他设置。