【问题标题】:Only get non-filtered values for Google App Script getRange仅获取 Google App Script getRange 的未过滤值
【发布时间】:2017-06-18 14:38:54
【问题描述】:

有没有办法只在 Google App Script 中获取未过滤的值? (即获取显示而不是隐藏的值?

例如,假设我在 Google 表格中有以下单元格 + 值。

A1=abc    B1=x
A2=def    B2=y
A3=ghi    B3=y
A4=kjl    B4=x

我过滤了 B 列,所以它只显示 [y]。

A2=def    B2=y
A2=ghi    B3=y

当我使用以下脚本时,隐藏值和非隐藏值都会打印到 msgBox。

function msgBoxTest(){

var ss = SpreadsheetApp.getActiveSpreadsheet();
var lastColumn = ss.getLastColumn();
var range_input = ss.getRange("A1:A").getValues();
var result = [i for each (i in range_input)if (isNaN(i))]; 
// remove commas originating from empty cells

Browser.msgBox(result);  
//I want only def & ghi to display here. 
//Instead, I get all values -> abc,def,ghi,kjl
}

我在 Google 上搜索并查看了在线信息,但找不到关于在 Google App 脚本中过滤掉值的代码。有什么建议么?

【问题讨论】:

    标签: javascript google-apps-script google-sheets spreadsheet


    【解决方案1】:

    如果你想使用脚本,这样就可以了:

    function msgBoxTest(){
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var lastColumn = ss.getLastColumn();
    var range = ss.getRange("A1:B").getValues();
    var filter=[]//new array
      for(var i=0;i<range.length;i++){
       if (range[i][1]=="y"){
        filter.push(range[i][0])
      }}
    Browser.msgBox(filter);  
    //I want only def & ghi to display here. 
    }
    

    或者你可以用一个简单的查询公式来做到这一点:

    =query(A1:B,"Select A where B='y'")
    

    【讨论】:

    • 嗨,Ed,这与我所寻求的非常接近。谢谢!!!我认为这是我正在寻找的 90%(脚本部分)想知道是否可以在没有第二列的情况下进行过滤(也许我不应该在示例中使用 B+'y' 列)例如,假设只有 A 列,没有 B 列。你还能想办法只抓取未过滤的数据吗?
    • 你能举个例子吗?也许问一个新问题。
    • 实际上通读该建议,我认为稍微修改一下就可以了。所以请忽略我的最后一条消息。再次感谢您的建议,非常有帮助。
    猜你喜欢
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多