フォーマットという名前のシートを、不特定多数のスタッフがコピーして入力作業しています。
.
数式など触られたくない範囲を保護しているのですが、コピーしたシートは保護が消えています。シート全体ではなく、指定範囲だけを保護した状態でコピー先のシートでも有効にすることは可能でしょうか?
GASを使えば、コピー先のシート名を指定することで可能なようですが、コピーしたシート名は予測できない名称になります。
シート番号を指定して左から3番目以降のシートはすべて繰り返し保護された状態でコピーを繰り返す設定は可能でしょうか?
下記、海外サイトで見つけたGASです
.
function duplicateProtectedSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
sheet = ss.getSheetByName("Sheet1");
sheet2 = sheet.copyTo(ss).setName("My Copy");
var p = sheet.getProtections(SpreadsheetApp.ProtectionType.SHEET)[0];
var p2 = sheet2.protect();
p2.setDescription(p.getDescription());
p2.setWarningOnly(p.isWarningOnly());
if (!p.isWarningOnly()) {
p2.removeEditors(p2.getEditors());
p2.addEditors(p.getEditors());
// p2.setDomainEdit(p.canDomainEdit()); // only if using an Apps domain
}
var ranges = p.getUnprotectedRanges();
var newRanges = [];
for (var i = 0; i < ranges.length; i++) {
newRanges.push(sheet2.getRange(ranges[i].getA1Notation()));
}
p2.setUnprotectedRanges(newRanges);
}
何卒、宜しくお願いします。
あなたの回答
tips
プレビュー