根据特定条件保护工作表



我想防止用户在我的谷歌工作表上删除/添加行和列,但是,当我保护工作表时,我不能特别要求它只阻止这些,它会阻止数据输入、隐藏/取消隐藏行/列等,当工作表受到保护时,我的脚本不起作用。

function onEdit(e) {
var sheetName = 'Fund Request';
var sh = SpreadsheetApp.getActive().getSheetByName(sheetName),
status = sh.getRange('A20').getValues();
function showHideRow(v, i) {
// [[row, numberRows]]
var rows = [[21,180]];
return v[0]
? sh.showRows.apply(sh, rows[i])
: sh.hideRows.apply(sh, rows[i])
};
status.forEach(showHideRow);
}

有什么想法吗?如果用户在工作表受到保护的情况下,除了添加/删除行和列之外,仍然可以正常使用工作表,那就太好了。

遗憾的是,您想要的无法实现,因为保护工作表不会导致内容发生任何更改。这也适用于添加/删除行/列,不幸的是,谷歌在当前阶段不允许在电子表格中选择要限制的操作类型。

使用onChange触发器可能会使您受益,如果检测到上述操作,则显示警报。

function onChange(e) {
if (e.changeType == 'REMOVE_ROW')
SpreadsheetApp.getUi().alert('Please do not remove any rows!');
}

参考

  • 应用程序脚本触发事件对象;

  • 应用程序脚本Ui类。

最新更新