我想在电子表格上获取矩形区域的A1注释。电子表格上的矩形样本位于图像下方。
我想获得有价值细胞的A1Notation" 1"。我不想得到B2,C2,D2,B3,C3,D3,B4,C4,D4和#34;。我想得到" B2:D4"。我试过的脚本是
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var result = [];
for (var i = 0; i < data.length; i++){
for (var j = 0; j < data[i].length; j++){
if (data[i][j] == 1) {
var range = sheet.getRange(i + 1, j + 1).getA1Notation();
result.push(range);
}
}
}
Logger.log(result);
此脚本返回&#34; B2,C2,D2,B3,C3,D3,B4,C4,D4和#34;。 sheet.getDataRange().getA1Notation()
是&#34; A1:D4&#34;。 &#34; 1&#34;的细胞位置并不总是一样的。我的问题是
我查看了Puzzle: Find largest rectangle (maximal rectangle problem)和链接。但我无法理解将其应用于我的脚本的方法。非常感谢你的时间。
这些是样品。我得到了大小顺序的区域。
A B C D E
1 0 0 0 0 0
2 0 1 1 1 0
3 0 1 1 1 0
4 0 1 1 1 0
5 0 0 0 0 0
我需要&#34; B2:D4&#34;。
A B C D E
1 1 1 1 0 0
2 0 1 1 1 0
3 0 1 1 1 0
4 0 1 1 1 0
5 0 0 0 0 0
我需要&#34; B2:D4&#34;和&#34; A1:C1&#34;。
A B C D E
1 0 1 1 1 1
2 0 1 1 1 1
3 0 0 0 1 1
4 0 0 0 0 1
5 0 0 0 0 1
我需要&#34; B1:E2&#34;,&#34; E3:E5&#34;,&#34; D3:D3&#34;。
答案 0 :(得分:0)
您可以按如下方式修改您的功能:
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var result = [];
for (var i = 0; i < data.length; i++){
for (var j = 0; j < data[i].length; j++){
if (data[i][j] == 1) {
var range = sheet.getRange(i + 1, j + 1).getA1Notation();
result.push(range);
}
}
}
Logger.log(result[0] + ":" + result[result.length-1]);
也许它没有经过优化,因为你在整个数据范围内进行迭代,但是在不知道你的数据结构的情况下很难说出优化的方式,需要详细说明。