google-apps-script - 工作表复制脚本:其他用户运行脚本时未设置保护
问题描述
我正在与其他人共享 Google 工作表,并且仅使用电子邮件 ID 启用共享。我创建了一个脚本,当运行时复制主表并将主表中的权限和保护设置到复制表中。在主表中放置了一个按钮来执行此脚本。
当我(所有者)运行脚本时,保护被复制得很好,其他用户无法访问受保护的单元格,但是当工作表的其他编辑器运行脚本时出现问题,创建的新工作表使他们也可以完全访问编辑所有受保护的字段.
我写的代码如下:
function Protect() {
var spreadsheet = SpreadsheetApp.getActive();
var myValue = SpreadsheetApp.getActiveSheet().getSheetName();
spreadsheet.duplicateActiveSheet();
var totalSheets = countSheets() - 3;
myValue = "DO" + totalSheets;
SpreadsheetApp.getActiveSpreadsheet().renameActiveSheet(myValue);
var protection = spreadsheet.getActiveSheet().protect();
protection.setUnprotectedRanges([spreadsheet.getRange('C2:E5'), spreadsheet.getRange('C6:D6'), spreadsheet.getRange('F5:G5'), spreadsheet.getRange('F6:G6'), spreadsheet.getRange('B9:B18'), spreadsheet.getRange('C9:G18'), spreadsheet.getRange('D20:D22'), spreadsheet.getRange('G20:G22'), spreadsheet.getRange('B20:B22'), spreadsheet.getRange('E21'), spreadsheet.getRange('E20')])
.removeEditors(['user2@domain.com', 'user3@domain.com']);
spreadsheet.getRange('G2').activate();
spreadsheet.getRange('G2').setValue(myValue);
spreadsheet.getRange('G3').activate();
spreadsheet.getRange('G3').setValue(new Date()).setNumberFormat('dd-MMM-YYYY');
spreadsheet.getRange('C2').activate();
hideImage();
};
解决方案
推荐阅读
- typescript - 承诺解决的数据不可访问
- ruby-on-rails - 使用 capybara 和 docker-chromedriver 时无法连接到 websocket
- ejs - 如何使用 EJS 有条件地显示变量
- javascript - 如何在 chart.js 中调试 maxTicksLimits?
- ibm-mq - MQ 高级消息安全错误:AMQ9021E
- javascript - 拆分网址并替换
- python - 垃圾邮件过滤:删除停用词
- sql - 如何将日期更改为其他格式
- smalltalk - 有没有办法将方法标记为待在 Pharo 中实现?
- php - 如果在第二个数组上找到第一个数组的值,则替换并回显它