我正在尝试编写一个脚本来保护所有工作表免受编辑,只有几个部分除外。我目前收到错误消息“无法将数组转换为Range []。”
我目前的印象是我需要以字符串表示法(我认为这就是它的名称)来编写它,例如['C4:D7']的(4,3,3,2)格式为(按照我目前的理解,firstRow,firstColumn,行数,列数)。
这是当前的脚本:
function Protect() {
var spreadsheet = SpreadsheetApp.getActiveSheet();
var protection = spreadsheet.protect();
protection.setUnprotectedRanges(['C4:D7', 'C11:D13', 'C18:E20', 'F18:G18', 'C23:G25', 'C30:D32'])
};
所以我的主要问题是我的第4行应该是什么,因为我尝试过的任何东西都没有用(并且如果您使用一个示例,我可以要求您使用一个实际的示例,因为我发现我真的很努力去做些什么)人们在答案中使用占位符)
一种子问题是:有没有一种方法可以将A1转换为字符串表示法(有点相反)?
非常感谢
:)
答案 0 :(得分:0)
所以要清楚一点:
如田边池所说:
function Protect() {
var spreadsheet = SpreadsheetApp.getActiveSheet();
var protection = spreadsheet.protect();
protection.setUnprotectedRanges(spreadsheet.getRangeList(['C4:D7', 'C11:D13', 'C18:E20', 'F18:G18', 'C23:G25', 'C30:D32']).getRanges());
}
“保护范围”对话框确认该过程是否有效:
子问题的可能答案:
function convertA1ToList(A1string) {
var A1string=A1string || 'A1:Z100';//for debugging return for this is 1,1,100,26
if(A1string) {
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getRange(A1string);
var rowStart=rg.getRow();
var columnStart=rg.getColumn();
var numrows=rg.getHeight();
var numcols=rg.getWidth();
return Utilities.formatString('%s,%s,%s,%s',rowStart,columnStart,numrows,numcols);
}
}