我有一个主电子表格应用程序,该应用程序具有静态(=结构不变,仅内容上不变)Gsheet'gameSchedule',其数据在一定范围内。
我们团队中的每个玩家都有自己的电子表格应用,其中包含“ gameSchedule”的副本,他应该在该应用中维持计划参加的比赛。
在维护“ gameSchedule”的内容时,我想向玩家释放(=取消保护)某些范围。
我的脚本从主Gsheet“ gameSchedule”中将玩家应该维护的范围收集到数组“ readyForEdit”中。
当我尝试使用以下语句取消保护各个玩家纸牌中的范围时:
protection.setUnprotectedRanges(unprotect);
我收到一条错误消息,说目标范围和源范围必须在同一电子表格中
“保护”的定义如下
...
var protection = sheet.protect().setDescription('GameSchedule');
...
(在循环中)为每个玩家重新定义“工作表”。
数组'unprotect'基于这样的'readyForEdit':
...
var unprotect = [];
...
for (var l = 0; l < 31; l++){
unprotect[i] = readyForEdit[l].offset(0, columnsPerWeek *k );
};
...
我希望我的解释是可以理解的。
谢谢您的输入。
如何以最小的可复制示例为例?
//Source
var sourceSpreadsheet = SpreadsheetApp.getActive();
var sourceSheet = sourceSpreadsheet.getSheetByName('GameSchedule');
var readyForEdit = [];
readyForEdit[0] = sourceSheet.getRange("E6:E12");
//Destination spreadsheets
var destinationSpreadsheet = SpreadsheetApp.openById(sheePlayerID);
var sheet = destinationSpreadsheet.getSheetByName('GameSchedule');
var protection = sheet.protect().setDescription('GameSchedule');
var unprotect = [];
unprotect[0] = readyForEdit[0].offset(0, 1);
protection.setUnprotectedRanges(unprotect);
答案 0 :(得分:1)
解决了
unprotect[0] = sheet.getRange(readyForEdit[0].offset(0, 1).getA1Notation());