我有一个从录音中获得的示例宏代码。因此,每当我运行它时,代码都会保护"C"和"D"列。
但是,我想要的是当我第二次运行此代码时,它会保护接下来的 2 列,即"E"和"F",依此类推。
我该怎么做。?
另外,有没有办法让这段代码在每天的设定时间自动运行一个月,这样我就不必每天手动运行代码了。
/** @OnlyCurrentDoc */
function DataReWriteProtection() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('C:D').activate();
var protection = spreadsheet.getRange('C:D').protect();
};
此代码可能会让您开始开发自己的代码。
该脚本应作为可安装、时间驱动的触发器进行安装。您应该选择最适合您的频率和执行时间。
function so5577363801() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
// assumes that cell A1 contains the column value (as an integer) for the next column to be protected
// assumes that two columns (side-by-side) are to be protected
var colNumRange = sheet.getRange("A1");
var colNum = colNumRange.getValue();
var startcol = colNum;
var endcol = colNum+1;
// convert column numbers to letters
var startletter = columnToLetter(startcol);
var endletter = columnToLetter(endcol);
// Logger.log("DEBUG: Cell A1: "+colNum+", start column: "+startcol+", endcol: "+endcol+", start letter: "+startletter+", end letter: "+endletter);//DEBUG
// define the range to be protected
var range = sheet.getRange(startletter+":"+endletter);
// Logger.log("DEBUG: range = "+range.getA1Notation());//DEBUG
var rangename = '"'+startletter+":"+endletter+'"';
//Logger.log("DEBUG: range name: "+rangename);//DEBUG
// protect the range, and assign a description
var protection = sheet.getRange(startletter+":"+endletter).protect();
protection.setDescription(rangename).setWarningOnly(true);
// update CellA1 with the column number to be used next time.
var newcol = colNum+2;
colNumRange.setValue(newcol);
}
function columnToLetter(column){
var temp, letter = '';
while (column > 0){
temp = (column - 1) % 26;
letter = String.fromCharCode(temp + 65) + letter;
column = (column - temp - 1) / 26;
}
return letter;
}