我正试图通过应用程序脚本编辑谷歌工作表,但每当代码试图编辑受保护的范围时,执行就会停止,并出现错误
您正试图编辑受保护的单元格或对象。如果需要编辑,请联系电子表格所有者以删除保护。
尽管使用了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()