使用Google Apps脚本在电子表格中的一列中获取值

Has*_*del 22 javascript google-apps google-apps-script

我希望得到一个字符串值 - 稍后将其与if条件进行比较 - 使用Google应用脚本从电子表格中的一列开始.我搜索了互联网,发现了这个链接 - 抱歉,如果这听起来很愚蠢,我是谷歌应用脚​​本的新手 - https://developers.google.com/apps-script/class_spreadsheet

var values = SpreadsheetApp.getActiveSheet().getRange(2, 3, 6, 4).getValues(); 
Run Code Online (Sandbox Code Playgroud)

我想这一定是有帮助的,唯一的问题是我想从中获取值的列是动态的,所以如何设置此列的范围

Ser*_*sas 36

如果您使用简单:

var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues()

您将获得由行和列索引的工作表中所有数据的2维数组.

因此,要获取A列中的值,使用row1 values[0][0],values[1][0]对于columnA,第2行,values[0][2]对于列C row1等,...

如果需要迭代for循环(在单个列中):

for(n=0;n<values.length;++n){
var cell = values[n][x] ; // x is the index of the column starting from 0
}
Run Code Online (Sandbox Code Playgroud)

如果你需要迭代for循环(在一行中):

for(n=0;n<values[0].length;++n){
var cell = values[x][n] ; // x is the index of the row starting from 0
}
Run Code Online (Sandbox Code Playgroud)

  • 性能上存在巨大差异。getRange("A:A") 更快。 (4认同)
  • 不过,这真的是一种有效的方法吗?检索整个数据范围然后只需要一列似乎太过分了。 (2认同)
  • 获取所有数据或仅获取列数据需要花费相同的时间,因此它实际上没有任何区别:-)您可以轻松地在执行记录中检查该记录,其中所有执行时间均通过服务调用记录。 (2认同)
  • 这确实有助于我理解二维数组。谢谢 (2认同)

sha*_*e93 9

循环遍历行并获取列值的更简单方法..希望有帮助

var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues();

values.forEach( function(row) {
  row[4] // column index as 4
});
Run Code Online (Sandbox Code Playgroud)


小智 8

这是我用来获取动态列中的值的脚本:

var SS = SpreadsheetApp.getActiveSheet()
var Avals = SS.getRange("A1:A").getValues();
var numberOfValues = Avals.filter(String).length;
var RangeVals = SS.getRange(1,1,numberOfValues).getValues();
Run Code Online (Sandbox Code Playgroud)

不过,我从来没有必要根据动态变化的起点来更改起始行。有兴趣看看这将如何完成。

这是一个类似的帖子。另一个例子在这里


its*_*zad 5

假设您希望A使用getRange(a1Notation)列中的所有行/单元格:

  var values = SpreadsheetApp.getActiveSheet().getRange("A:A").getValues();
Run Code Online (Sandbox Code Playgroud)