我是Apps脚本的新手,并且一直在减慢自己的教学速度。我搜索了Stack Over Flow并发现了类似的问题,并尝试使用找到的信息解决问题,但迄今为止没有成功。希望这里有人可以给新手一些指导。
我有一个与其他用户共享的电子表格。我想要保护的公式中有一些范围。我编写了一个脚本,可以更改受保护范围内的论坛。它在我的帐户下运行完美,但共享用户无法运行脚本,因为他们没有获得许可"。
我试图写一些试图授予临时访问权限以编辑受保护范围的代码。我的想法是有三种不同的功能。第一个功能删除了保护。第二个函数执行对现在不受保护的范围的更改。然后第三个功能再次保护范围。以下代码在我的帐户下完美运行。但是,当以共享用户身份登录时,会发出警告,说明"您无权执行.."
有人可以告诉我哪里出错了,并指出我的方向正确吗?
function myFunction() {
//add protections back
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName('Spray Template');
var range = sheet.getRange('B15:E15');
var range2 = sheet.getRange('G15:H15');
var range3 = sheet.getRange('D16:E16');
var ranges = [range,range2,range3];
for (var j = 0; j<3; j++){
ranges[j].protect().removeEditor('email_here@gmail.com');
}
}
function myFunction2(){
//remove protections
var ss = SpreadsheetApp.getActive();
var ss2= ss.getSheetByName('Spray Template');
var protections = ss2.getProtections(SpreadsheetApp.ProtectionType.RANGE);
f
or (var i = 0; i < protections.length; i++) {
var protection = protections[i];
protection.addEditor('email_here@gmail.com');
SpreadsheetApp.flush();
protection.remove();
}
}
function test() {
myFunction2();
functionThatChangesRange();
myFunction();
}
答案 0 :(得分:0)
我想如果未经许可编辑/访问这些受保护的范围,其他人也将缺乏编辑保护本身的权限(即使是通过脚本)。
这是因为脚本从运行它的用户继承其权限(即脚本在该人的帐户下运行)。
显然,你不能同时保护范围,也不能让任何人改变保护 - 这会破坏整个目的!
答案 1 :(得分:0)
我看到其他地方建议不要保护一个单元格,并在运行&#39; onedit&#39;的文档中设置一个脚本。每当用户更改该单元格的值时,脚本就应该运行。
答案 2 :(得分:0)
一个人可以使用onEdit
运行脚本或可安装的触发器。但是,我还没有找到一种方法,可以从自定义菜单或按钮调用脚本并编辑成功保护的范围。