Google Apps脚本检查活动单元是否有任何保护

时间:2017-03-17 06:44:16

标签: google-apps-script google-sheets

我有一个受保护的电子表格,除了某些单元格/范围(例如,表格受到保护,但范围B2除外:D6和B10:D15)。我还有一个插入行函数,当用户希望在允许的范围内插入行时,它使用WebApp来覆盖保护。不幸的是,这允许用户在工作表中的任何位置插入行,因为它会在脚本执行期间覆盖所有保护。

我需要先检查当前光标位置(活动单元格)是否在允许范围内。如果是这样继续,如果没有中止,则显示相应的消息。

使用数据>设置了保护;受保护的纸张和范围>表>除了某些细胞。权限设置为“仅限你”。

2 个答案:

答案 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');
}
}
}
}