我是 Google Apps 脚本的新手,正在尝试编写脚本来执行以下操作:
这是我目前正在使用的(请参阅我遇到的部分)
function protectFormulas() {
// DEFINE WORKSHEET
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ws = ss.getActiveSheet();
// PROTECT ACTIVE SHEET
var protection = ws.protect().setDescription('Protect Fomulas');
// Establish Range and Formulas within [currently my range is the entire sheet]
var range = ws.getDataRange();
var formulas = range.getFormulas();
// *****THIS IS WHERE I'M STUCK - how to determine the Range[] Array within "Formulas" ?? [aka ignore the notes]
//var result = new Array(formulas.length)
//for (var i = 0; i < formulas.length; i++) {
//IF formulas [i] is blank
//add formulas R1C1 to Result Array [how to?]
//ELSE
// do nothing
//}
// *****END OF WHERE I'M STUCK
// UNPROTECT select Ranges
var unprotected = ws.range;
protection.setUnprotectedRanges(result);
}
请帮忙!
答案 0 :(得分:2)
function protectFormulas() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getActiveSheet();
let up = [];
let protection=sh.protect();
const range = sh.getDataRange();
const formulas = range.getFormulas();
formulas.forEach((r, i) => {
r.forEach((c, j) => {
if (c == '') {//if not a formula then add range to up
up.push(sh.getRange(i+1,j+1));
}
});
});
protection.setUnprotectedRanges(up);//unprotect ranges in up
}