首页 > 解决方案 > 为什么 getDataRange.getValues() 没有提取所有必需的值?

问题描述

我有一个电子表格,我想使用谷歌脚本(基于 JS)将所有数据放入一个数组中,然后在该数组中搜索信息。我在下面的代码不起作用,并且在记录器中不返回任何内容:

function openNCR() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var NCRData = ss.getSheets()[1];
  var data = NCRData.getDataRange.getValues();
  var search = 'Open NCR'
  var target_rows = []

  data.forEach(function(element, index) {
    if (element == search) {
      target_rows.push(index)
    }
  })

  Logger.log(target_rows);
}

然而,当我在如何提取信息方面进行以下更改时,代码效果很好!上面和下面的主要区别是什么?getDataRange.getValues 不会提取该工作表中的所有值吗?如果是这种情况,那么为什么我需要定义一个特定的列来搜索如下(第 3 列是包含“Open NCR”或“Closed NCR”信息的列)?

function openNCR() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var NCRData = ss.getSheets()[1];
  var data = NCRData.getRange(1, 3, NCRData.getLastRow()).getValues()
  var search = 'Open NCR'
  var target_rows = []

  data.forEach(function(element, index) {
    if (element == search) {
      target_rows.push(index)
    }
  })

  Logger.log(target_rows);
}

标签: javascriptexcelgoogle-sheetsscripting

解决方案


.getDataRange() 是“Sheet”类中的一种方法,因此需要括号。

 var data = NCRData.getDataRange().getValues();

推荐阅读