簡體   English   中英

獲取范圍內的x單元格谷歌表格應用程序腳本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM