在Google表格中找到所有单元格的位置

时间:2019-03-04 09:40:11

标签: javascript google-apps-script

问题是:我有一个很大的电子表格(超过4500行),第一列中有很多数据-例如。带有不唯一的水果类型,例如:

APPLE
BANANA
APRICOTS
APPLE
BLACKCURRANT
APPLE
BANANA
APRICOTS
etc. 

我需要的-找到每个香蕉,以便能够在某些信息旁边放入单元格,例如。是。我尝试从Locating a cell's position in google sheets using a string or an integer循环解决方案,但是可以肯定我的代码是错误的。我已经花了很多时间来发明一些东西,但是仍然不明白我所缺少的东西。

function test(){
  var dispatch = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("FRUITS"); 
  var find = dispatch.getRange("A:A").getValues();
  var name = "BANANA";

  var lastRow = dispatch.getLastRow();
  var n = 1;
  var temp = dispatch.getRange(n, 2).getValue();
  var i = 0;

  while (temp != ""){
    for(var n in find){
      if(find[n][0] === name){break}
    }
    n++;
    var n = n + i;
    dispatch.getRange(n, 2).setValue("YES");
    var temp = dispatch.getRange(n, 2).getValues();
    var find = dispatch.getRange(n, 2, lastRow).getValues();
    var i = n;
  } 
}

我将非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

代码示例如下:

function test(){
  var dispatch = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("FRUITS"); 
  var range = dispatch.getRange(1, 1, dispatch.getLastRow(), 2);
  var values = range.getValues();
  values.map(function(row) {
    if (row[0] == "BANANA")
      row[1] = "YES";
  });
  range.setValues(values);
}

JS array map() method完成了大部分工作。我们将范围值转换为JS数组,并在映射完成后将其返回。