javascript - 按值获取单元格

标签 javascript google-apps-script google-sheets

如何使用单元格的获取单元格的范围?

假设我有此专栏:

[   ][   A   ]
[ 1 ][ hello ]
[ 2 ][ world ]
[ 3 ][ waaah ]
[ 4 ][ waaah ]
[ 5 ][ waaah ]
Sheet: WALUIGI_SAYS_"HI"

我想找到 waaah 的第一个实例。我知道它在 A 列中,但我不知道该行。

如何使用应用脚本找到它?

最佳答案

至少有 3 种方法可以满足您的要求。

  1. 手动将 =MATCH("waaah",A1:A5,0) 等公式放入单元格中,然后在脚本中读取该单元格的值。

  2. 将脚本中的公式放入单元格中并按上述方式读取。

  3. 创建您自己的脚本来循环范围,检查每个位置的值匹配。在每个循环上增加一个计数器,并在找到匹配项时退出循环。计数器将成为索引。

编辑:为了清晰起见,添加了一些示例代码,演示了每种方法。

/**
 * Finds first matching row in a column
 * @customfunction
 */
function findFirstMatchingRow() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();

  //Method 1 - Formula manually placed in B1
  var row = sheet.getRange("B1").getValue();
  if (row=="#N/A"){
      Logger.log("NoMatch");  
  }else
  {
       Logger.log(row);  // shows 3
  }


  //Method 2 - Formula placed in B2 via script.
  row = sheet.getRange("B2").setFormula("=MATCH(\"waaah\",A1:A5,0)").getValue();
   if (row=="#N/A"){
      Logger.log("NoMatch");  
  }else
  {
       Logger.log(row);  // shows 3
  }

  //Method 3 - Make your own search loop
  // first load the values into an array (in one trip to the server)
  var valuesArray = sheet.getRange("A1:A5").getValues();
  var lengthOfArray = valuesArray.length;
  var matchFound = false;
  var n;

  for (n=0; n<lengthOfArray; n++){   // loop through the values looking for a match
      if (valuesArray[n] == "waaah")
      {
        matchFound=true;
        n++;                        // add one because arrays start at 0 not
        break;
      }
  }
  if (matchFound){
    Logger.log(n);    // shows 3
  }
  else {
    Logger.log("No match");
  }

}

产生此日志输出:

[18-10-22 08:43:49:917 HKT] 3.0
[18-10-22 08:43:50:176 HKT] 3.0
[18-10-22 08:43:50:300 HKT] 3.0

关于javascript - 按值获取单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52910672/

相关文章:

javascript - AngularJS ng-repeat 不循环数组

javascript - 如何仅在 NextJS 站点构建期间使用 getInitialProps?

javascript - 下拉菜单的 javascript onclick 问题

html - 将 HTML 内容渲染到 Google 电子表格

google-apps-script - 谷歌应用脚​​本: does the 30 simultaneous executions limitation apply to the owner of the script or the user who executes it?

javascript - 在 promise 解决后调用函数,但 Jasmine 未通过测试。为什么?

html - 如何在 Google Apps 脚本的 HTMLOutput 中使用 Scriptlet

google-apps-script - 带有附加功能的自定义功能?

printing - 有什么方法可以使用Google Apps脚本打印Google表格工作表?

java - 将数据插入新的 Google 工作表