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
。