首页 > 解决方案 > Google Apps 脚本复制/粘贴过滤的数据集

问题描述

我一直在尝试编写一个脚本,该脚本只需获取过滤后的数据,复制它,然后将其粘贴到另一个工作表中。我似乎没有做任何事情。使用我在网上找到的下面的代码,它应该可以工作,但我不断收到一个错误,指出该范围内的行数必须至少为 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);
}

标签: arraysgoogle-apps-scriptfiltercopy-paste

解决方案


解决方案:

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

此外,由于您的目标是将结果粘贴到不同的工作表中,因此您需要同时定义源工作表和目标工作表。创建一个工作表并将其名称插入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);
}

参考:

指数()


推荐阅读