如何使用电子表格的 google 脚本为所有人设置保护?
How to set protection for everyone with google script for spreadsheet?
我正在创建一个复制粘贴 sheet 的脚本。复制的 sheet 对每个人(所有者除外)都受到保护。当用户单击按钮时,脚本运行并复制粘贴我的主要 sheet,脚本为所有用户设置保护,除了他自己和我(所有者)。
这是脚本的一部分,因此您可以理解:
function protect(){
var s = SpreadsheetApp.getActive();
var copy = s.getSheetByName('BEI-').copyTo(s);
var newsheet = copy.setName(NouvDem);
var SheetToProtect=s.getSheetByName(NouvDem).activate();
SheetToProtect.protect();
var AllProtections = SheetToProtect.getProtections(SpreadsheetApp.ProtectionType.SHEET);
var MyProtection = AllProtections[0];
var Users = MyProtection.getEditors();
MyProtection.removeEditors(Users);
}
如何保护新的sheet不受他自己的影响(所以他只能使用脚本修改sheet)?
谢谢! :)
不可能.
当用户复制您的 Sheet 时,他就成为该副本的 所有者,因此他不能限制自己编辑它。此外,用户不可能保护范围不受他自己的影响。
最接近的解决方案是设置 Warning,但这只会显示一个可跳过的弹出窗口,询问用户是否确定要编辑该范围。
但是,您可以自己创建副本并与用户共享,然后限制他们可以访问的范围。
我正在创建一个复制粘贴 sheet 的脚本。复制的 sheet 对每个人(所有者除外)都受到保护。当用户单击按钮时,脚本运行并复制粘贴我的主要 sheet,脚本为所有用户设置保护,除了他自己和我(所有者)。 这是脚本的一部分,因此您可以理解:
function protect(){
var s = SpreadsheetApp.getActive();
var copy = s.getSheetByName('BEI-').copyTo(s);
var newsheet = copy.setName(NouvDem);
var SheetToProtect=s.getSheetByName(NouvDem).activate();
SheetToProtect.protect();
var AllProtections = SheetToProtect.getProtections(SpreadsheetApp.ProtectionType.SHEET);
var MyProtection = AllProtections[0];
var Users = MyProtection.getEditors();
MyProtection.removeEditors(Users);
}
如何保护新的sheet不受他自己的影响(所以他只能使用脚本修改sheet)?
谢谢! :)
不可能.
当用户复制您的 Sheet 时,他就成为该副本的 所有者,因此他不能限制自己编辑它。此外,用户不可能保护范围不受他自己的影响。
最接近的解决方案是设置 Warning,但这只会显示一个可跳过的弹出窗口,询问用户是否确定要编辑该范围。
但是,您可以自己创建副本并与用户共享,然后限制他们可以访问的范围。