google-apps-script - 不相交范围的 Google 脚本保护问题
问题描述
我有一个范围数组,我试图通过循环来保护它,但它不再起作用了。我不知道为什么。它昨天工作得很好,但保护措施没有发生在工作表上。我已尝试删除所有编辑器,但我们仍然可以进行编辑。基本上,我有一张命名范围;我根据这些范围创建了一个数组;然后从该数组中获取范围列表;然后我循环遍历范围列表以保护每个范围。
function protectTU(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s1 = ss.getSheetByName("Named Ranges");
var s2 = ss.getSheetByName("Copy of TRUCK UPDATES");
var lr1 = s1.getRange("A3:A").getValues(); //Find last rowv
var lr2 = lr1.filter(String).length; //Find last row
var lr3 = parseInt(lr2) - 1;
var data1 = s1.getRange("A3:E" + lr2).getValues();
var dis = 2;
var i = 1;
var v1 = [];
for (var j = i; j < lr3 - 1; j++)
{
if(data1[j][4] == dis)
{
v1.push(data1[j][1]);
}
if(dis == 1 && j == 43)
{break;}
if(dis == 2 && j == 81)
{break;}
if(dis == 3 && j == 135)
{break;}
}
var ranges = s2.getRangeList(v1);
**for (i = 0; i < ranges.length; i++)
{
var protection = ranges[i].protect().setDescription('Please see the office for permission');
}**
}
解决方案
试试这个:
我想看看你的电子表格的图像和一些数据来确认,所以这几乎是一个猜测。
function protectTU(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s1 = ss.getSheetByName("Named Ranges");
var s2 = ss.getSheetByName("Copy of TRUCK UPDATES");
var lr3 = s1.getRange(3,1,s1.getLastRow()-2,1).getValues();//better not to use A1Notation for setting up range here
var data1 = s1.getRange(3,1,s1.getLastRow()-2,5).getValues();//and here
var dis = 2;
var i = 1;
var v1 = [];
for (var j=0;j<data1.length;j++) {
if(data1[j][4] == dis) {
v1.push(data1[j][1]);//so hopefully column2 has A1Notation
}
if(dis==1 && j==43){break;}
if(dis==2 && j==81){break;}
if(dis==3 && j==135){break;}
}
var ranges = s2.getRangeList(v1).getRanges();
//I don't use protection much so I don't know about this
for (i = 0; i < ranges.length; i++){
var protection = ranges[i].protect().setDescription('Please see the office for permission');
}
}
推荐阅读
- github - 通过 url 获得星号、表格和其他元数据?
- mysql - 使用外部联接过滤活动记录
- c++ - 如何使用 QByteArray 而不是 SNDFILE
- ios - ld: 升级到 60.5 后未找到 -lRCTGeolocation 错误的库
- excel - 将范围行数组转换为 Powerpoint 幻灯片表中的连续列
- ansible - group_names|intersect 使用 intersect 命令
- c - i 值增加后成本价格变为 0
- salesforce - 无法关闭动态闪电组件
- nginx - Nginx cache directory is empty
- jenkins - 在詹金斯拉取请求构建器作业中获取源分支名称的正确方法是什么