我有一个受保护的电子表格,除了某些单元格/范围(例如,表格受到保护,但范围B2除外:D6和B10:D15)。我还有一个插入行函数,当用户希望在允许的范围内插入行时,它使用WebApp来覆盖保护。不幸的是,这允许用户在工作表中的任何位置插入行,因为它会在脚本执行期间覆盖所有保护。
我需要先检查当前光标位置(活动单元格)是否在允许范围内。如果是这样继续,如果没有中止,则显示相应的消息。
使用数据>设置了保护;受保护的纸张和范围>表>除了某些细胞。权限设置为“仅限你”。
答案 0 :(得分:1)
您可以检查用户can edit是否为范围:
var file = SpreadsheetApp.getActiveSpreadsheet();
var sheet = file.getSheetByName('Sheet1');
var range = sheet.getRange("A1:B10");
// whether the user has permission to edit
// every cell in the range
Logger.log(range.canEdit());
答案 1 :(得分:1)
我正在使用下面的代码来保护活动工作表中的所有非空单元格,但是我想跳过已受保护的单元格,我试图检查单元格是否受保护,然后无事可做。您是否可以帮助添加以下代码,如果非空单元格未受保护,请对其进行检查,然后对其进行保护:
function onOpen() {
var range = SpreadsheetApp.getActiveSheet().getDataRange();
//range.unprotect();
var values = range.getValues();
for (var i = 0; i < values.length; i++) {
for (var j = 0; j < values[i].length; j++) {
if (values[i][j] !== "") {
range.getCell(i + 1, j +
1).protect().setDescription("lock").removeEditor('xxxxx...@gmail.com');
}
}
}
}