Api 应用程序脚本:将筛选范围粘贴到特定列中的下一个空行

Api 应用程序脚本:将筛选范围粘贴到特定列中的下一个空行,api,google-apps-script,google-sheets,filter,Api,Google Apps Script,Google Sheets,Filter,我想创建一个代码,它复制一个过滤列,并将整个列粘贴到另一个工作表中的下一个可用行。但是,下面的代码将范围粘贴到循环中,直到电子表格结束。我怎么能只粘贴一次呢? 我自己也找不到答案。 我将非常感谢你的帮助 function CopyFilter() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("MASTER"); var values = sheet.get

我想创建一个代码,它复制一个过滤列,并将整个列粘贴到另一个工作表中的下一个可用行。但是,下面的代码将范围粘贴到循环中,直到电子表格结束。我怎么能只粘贴一次呢? 我自己也找不到答案。 我将非常感谢你的帮助


function CopyFilter() {
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("MASTER"); 
var values = sheet.getDataRange().getValues();
Logger.log("VALUES "+values.length);

var criteria = SpreadsheetApp.newFilterCriteria()
.whenNumberGreaterThanOrEqualTo(1)
.build();

var range = sheet.getFilter()
.setColumnFilterCriteria(52, criteria)
.getRange();   
range.getValues();

var sheet2 = ss.getSheetByName("DL CSV OUTPUT");
sheet.getRange("AZ4:AZ").copyTo(sheet2.getRange(2,41,sheet2.getLastRow()+1), {contentsOnly:true});

sheet.getFilter().remove();
}

不要使用复制方法。只需选择您感兴趣的范围,然后在目标工作表中获得一个范围(大小相同-非常重要),并立即设置所有值

例如:

const valuesToCopy = sheet.getRange("AZ4:AZ").getValues();
sheet2.getRange(2,3,valuesToCopy.length).setValues(valuesToCopy);
而且不需要担心:
{contentsOnly:true}
因为上述方法不会带来任何格式

参考:

如果使用
Range.getNumRows()
而不是
getLastRow()
作为
getRange
的第三个参数,则也可以使用
copyTo