具有多個選項卡的電子表格有 10 個編輯器/訪問權限。我想在其中 8 個編輯器的每個選項卡中鎖定一些范圍。
當我運行下面撰寫的谷歌應用程式腳本時,它還鎖定了 8 個編輯器,無法編輯選項卡名稱甚至選項卡顏色。可以建議我哪里出錯了嗎?我希望他們仍然能夠更改選項卡的選項卡名稱和顏色。
function addClassProtectionFor_Current(){ //Main function to run
var currentclasstab = SpreadsheetApp.getActiveSheet();
// Remove all range protections in the spreadsheet
var protections = currentclasstab.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (var i = 0; i < protections.length; i ) {
var protection = protections[i];
protection.remove();
}
var protection = currentclasstab.protect();
//restrict editors to owner
protection.getRange().getA1Notation();
var eds = protection.getEditors();
protection.removeEditors(eds);
//Add Editors to give access to the protected ranges
protection.addEditors(["me.gmail.com","[email protected]"]);
//set unprotected ranges
var ranges = protection.getUnprotectedRanges();
//Ranges to leave unlocked
var data = ["A5:V19","B23:V26","B29:V35","B39:V45"];
data.forEach(res => { //LOOPS INTO EVERY ARRAY CONTAINING SPECIFIC RANGES
ranges.push(currentclasstab.getRange(res));
protection.setUnprotectedRanges(ranges); //REMOVES THE PROTECTION ON THE RANGE
});
}
uj5u.com熱心網友回復:
我相信你的目標如下。
- 您想保護除
A5:V19,B23:V26,B29:V35,B39:V45來自用戶的單元格之外的所有單元格。 - 您想讓用戶在保護單元格的同時更改選項卡名稱和選項卡顏色。
- 您想使用 Google Apps 腳本來實作這一點。
問題和解決方法:
不幸的是,在當前階段,“UnprotectedRanges”似乎不能用于受保護的作業表。在這種情況下,用戶無法更改選項卡名稱和選項卡顏色。因此,在您的情況下,作為一種解決方法,為了讓用戶更改選項卡名稱和選項卡顏色,需要保護除A5:V19,B23:V26,B29:V35,B39:V45. 當這反映在您的腳本中時,它變成如下。
修改后的腳本:
function addClassProtectionFor_Current() {
var currentclasstab = SpreadsheetApp.getActiveSheet();
var protections = currentclasstab.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (var i = 0; i < protections.length; i ) {
var protection = protections[i];
protection.remove();
}
var ranges = ["A1:4", "W5:19", "A20:A", "B20:22", "B27:28", "B36:38", "W23:26", "W29:35", "W39:45", "B46:" currentclasstab.getMaxRows()];
currentclasstab.getRangeList(ranges).getRanges().forEach(r => {
const protection = r.protect();
var eds = protection.getEditors();
protection.removeEditors(eds);
protection.addEditors(["me.gmail.com","[email protected]"]);
})
}
- 在此腳本中, 的值
ranges是除 之外的所有單元格A5:V19,B23:V26,B29:V35,B39:V45。如果您想保護其他單元格,請將它們添加到陣列中。
參考:
- setUnprotectedRanges(范圍)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/392667.html
