尝试通过 GAS 编辑 GSheet 时无法捕获"You are trying to edit a protected cell or object."。如何验证编辑权限?



我正试图通过应用程序脚本编辑谷歌工作表,但每当代码试图编辑受保护的范围时,执行就会停止,并出现错误

您正试图编辑受保护的单元格或对象。如果需要编辑,请联系电子表格所有者以删除保护。

尽管使用了try-and-catch,但脚本未能捕捉到错误。请建议捕捉此错误的方法。

以下是我使用过的代码:如果你想测试场景,下面使用的表格具有通用访问权限和MasterData范围!A2:G3受到保护。

function myFunction() {
try{
var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1TCSNpk4zUhoHo_fUDYbr-jtXCI8U1lWJlhqwNP9C5V4/edit#gid=0");
var backendsheet=ss.getSheetByName("MasterData");
backendsheet.getRange(2,2).setValue("ABC");
}
catch(err)
{
Logger.log("Error Name:" +err.name);
Logger.log("Error Message:" +err.message);
}
}

在您的情况下,我认为为了确认您是否可以编辑范围,可能可以使用canEdit方法。当这反映在脚本中时,它将变为如下。

修改的脚本:

function myFunction() {
var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1TCSNpk4zUhoHo_fUDYbr-jtXCI8U1lWJlhqwNP9C5V4/edit#gid=0");
var backendsheet=ss.getSheetByName("MasterData");

// I modified below script.
var range = backendsheet.getRange(2, 2);
if (range.canEdit()) {
console.log("Your account can edit this range.");
} else {
console.log("Your account cannot edit this range.");
}
}
  • 例如,当backendsheet.getRange(2, 2)的范围是受保护的范围并且不能编辑时,range.canEdit()返回false

参考:

  • canEdit()

相关内容

最新更新