如何从单个单元行和列位置列表中获取表格范围



我有一个appscript,可以更新表格中的某些数据。一旦更新数据,我想保护该数据,以使用户无法修改它。

当前,我的函数返回与单个单元格的行和列位置相对应的2D阵列。我尝试通过此数组进行迭代,并按单元格在单元格上应用保护时间太长,因此我试图创建一个可以将这个单元位置数组的函数并返回范围的数组。

例如:

CellStoRotect = [[1,1] [2,1],[3,1],[4,1],[1,2],[2,2],[3,2],[4,[4,[4,[4,]2],[5,6]]

这里有一个从第1行,Col 1开始的范围,在第2行第4行结束。还有一个单个单元格,该单元不在第5行,col 6。

我正在尝试弄清楚如何制作给定数组的创建功能:

[[1,1,2,4],[5,6,1,1]

ie:一个范围从第1行Col 1开始,并延伸了2行和4个Col。另一个范围从第5行Col 6开始,并扩展为1行和1个Col。

这应该很容易,但是我只是无法围绕它。任何帮助都非常感谢。

您想做这样的事情。我必须跑步,所以我无法对其进行小错误测试,但它应该给您一般的想法!本质上,您一次通过CellStoRotect 2个元素移动,并从这两个元素获得一个范围。

var ranges = [];
for(var i = 0; i<cellsToProtect.length; i+=2){ //Important i+=2 we want to move 2 each time.
  var startRow = parseInt(sheet.cellsToProtect[i][0])+1;
  var startCol = parseInt(sheet.cellsToProtect[i+1][0]);
  var endRow = parseInt(sheet.cellsToProtect[i][1])+1;
  var endCol = parseInt(sheet.cellsToProtect[i+1][1]);
  var numRows = endRow - startRow;
  var numCols = endCol - startCol;
  ranges.push(startRow, startCol, numRows, numCols]);
}

最新更新