Google Apps 脚本 Copy/Paste 过滤后的数据集

Google Apps Script Copy/Paste Filtered DataSet

我一直在尝试编写一个脚本来简单地获取过滤后的数据,复制它,然后将其粘贴到另一个 sheet。我似乎没有做任何工作。使用我在网上找到的下面的代码,它应该可以工作,但我不断收到一个错误,指出范围内的行数必须至少为 1。但是,我有 A7:R500 范围内的数据,并且我'仅过滤掉空格和 'W'。我的想法是否正确?

function copyPaste(){
  var sheet = SpreadsheetApp.getActiveSheet();
  var values = sheet.getRange('A7:R500').getValues();

  var hiddenValues = ['', 'W'];
  values = values.filter(function(v){
    return hiddenValues.indexOf(v[4]) == 'W';
  });

  sheet.getRange(1,21, values.length, 18).setValues(values);
}

解决方案:

由于您已经在使用过滤器数组,因此您可以将 hiddenValues.indexOf(v[4]) 与 -1 进行比较以过滤掉空格和“W”。

此外,由于您的目标是将结果粘贴到不同的 sheet,因此您需要同时定义源和目标 sheet。创建一个 sheet 并将其名称插入下面代码中的 new sheet name 标记。

示例代码:

function copyPaste() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = ss.getActiveSheet();
  var sheet2 = ss.getSheetByName('<new sheet name>');
  var values = sheet1.getRange('A7:R500').getValues();
  var hiddenValues = ['', 'W'];
  values = values.filter(function(v){
    return hiddenValues.indexOf(v[4]) == -1;
  });
  sheet2.getRange(1,21, values.length, 18).setValues(values);
}

参考:

indexOf()