[英]get x cell in range google sheets app script
使用谷歌表格應用程序腳本,是否可以在一系列單元格中獲取 X 單元格,如下所示:
var app = SpreadsheetApp;
var ss = app.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var cells = sheet.getRange("D6:BF100"); // the range
for (var x = 0; x < 100; i++) {
var cell = cells[row][x]; // this is the line that doesn't work
if (someCondition(x)) {
cell.setBackground("red");
}
}
我不想為每個單元格更改 colors,只是那些條件正確的單元格。
我知道可以做這樣的事情:
var cell = sheet.getRange(row+i);
但是這種方法需要很長時間才能完成 for 循環,因為需要掃描數百個單元格。 我寧願只對整個范圍(而不是一次只使用一個單元格)使用 getRange 一次,然后從該范圍內(它應該制作一個二維數組對嗎?)設置單元格值。 我認為這會快很多。
有沒有其他方法可以更快地做到這一點,或者我只需要這樣做: var cell = cells[row][x];
一種不同的方式。
謝謝!
看起來您的 for 循環構造不正確。 您增加未在任何地方定義或使用的變量 i 。 此外,您使用變量 row 而不定義它。
它需要很長時間,因為每次調用cells.getRange()
時都必須查詢您的工作表。相反,您可以使用cells.getValues()
查詢一次以獲取整個范圍,然后更改滿足條件的單元格顏色一次時間。
嘗試以下操作;
var app = SpreadsheetApp;
var ss = app.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var cells_range = sheet.getRange("D6:BF100");
var cells_values = cells_range.getValues();
for (var col = 1; col <= cells_values[0].length; col++) {
for (var row = 1; row <= cells_values.length; row++) {
if (someCondition(cells_values[row][col])) {
cells_range.getCell(row, col).setBackground("red");
}
}
}
這只是我自己的答案,以幫助可能遇到此問題的用戶。
一旦你有了一系列單元格,如下所示:
var range = sheet.getRange("your range");
您可以這樣做來獲取特定的單元格:
var cell = range.getCell(row, col);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.