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);
}
参考:
我一直在尝试编写一个脚本来简单地获取过滤后的数据,复制它,然后将其粘贴到另一个 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);
}
参考: