【问题标题】:is sheet.getRange(2:3) a valid expression?sheet.getRange(2:3) 是一个有效的表达式吗?
【发布时间】:2019-04-25 15:44:06
【问题描述】:

我正在使用谷歌应用脚​​本处理谷歌表格。我想遍历一堆行 - 有条件地选择其中一些 - 并删除选定的行。我正在使用 sheet.getRange() 方法来实现这一点。我想将我的迭代变量直接传递给函数。但不工作。

我在 (https://developers.google.com/apps-script/reference/spreadsheet/group) Group 类中使用 getRange() 方法本身找到了以下示例代码。

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var range = sheet.getRange(2:3);
range.shiftRowGroupDepth(1);
var group = sheet.getRowGroupAt(2, 1);
//Expands this group.
group.expand();

这是我的代码

var data = sheet.getRange("A:A").getValues();

for (var k = 1; k<=data.length;k++){

    if((data[k]-data[k-1]) == 0)
    {
        sheet.getRange(k:k).activate();
    }
}

【问题讨论】:

  • 查看various options for .getRange(),您可以在其中使用行号和列号以及可选的计数或 A1 表示法。
  • 我将无法使用任何其他符号进行迭代。谷歌指南中给出的示例代码有误吗?

标签: google-apps-script


【解决方案1】:

无效。谷歌犯了一个错误。它应该被引用为有效的 JavaScript:

var range = sheet.getRange('2:3');

或者

sheet.getRange(k + ':' + k).activate();

【讨论】:

    【解决方案2】:

    data[k] 在您编写时没有数值。要访问数据中的各个项目,您需要执行 data[k][0]。我会尝试记录该值以确保它符合您的期望。您的另一个障碍是激活没有删除。您遇到的最后一个问题是您要向上而不是向下,因此如果删除其中一些行,您将跳过行(因此您需要从末尾迭代到开头)。这对你有用吗?

    var data = sheet.getRange("A:A").getValues();
    
    for (var k = data.length-1; k>0;k--){
    
        if((data[k][0]-data[k-1][0]) == 0)
        {
            sheet.deleteRow(k+1);//array addresses are off by 1 because rows count from 1 and arrays count from 0
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      • 1970-01-01
      相关资源
      最近更新 更多