我几天前使用以下链接提出了类似的要求:
如何将特定行从一张纸复制到另一张纸(Google Apps脚本)
现在,我有新的要求,需要您的帮助:
该脚本应将T列中值“否”的特定行从一张纸复制到另一张纸。复制值和格式很重要。
完整的行应被复制。
成功复制后,应在源表中删除该行。
你能帮我么?非常感谢你!
到目前为止,您可以在下面找到@Marios解决方案。在此再次表示感谢!
const ss = SpreadsheetApp.getActiveSpreadsheet();
const srcSheet = ss.getSheetByName("[Overview] All_Cases");
const tarSheet = ss.getSheetByName("OPS_FUNNEL");
const data = srcSheet.getDataRange().getValues().filter(r=>r[21]=='No').map(r => [r[0]]);
var tarlast = tarSheet.getRange("A:A").getValues().filter(String).length;
if (data.length>0){
tarSheet.getRange(tarlast+1,1,data.length,1).setValues(data);
}
您可以将已删除的行索引存储在过滤器函数内部,然后使用经典方法向后删除行。
列T的数组索引为19
,而不是21
。请注意这一点。
function myFunction() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const srcSheet = ss.getSheetByName("[Overview] All_Cases");
const tarSheet = ss.getSheetByName("OPS_FUNNEL");
const rowsD = [];
const data = srcSheet.getDataRange().getValues()
.filter((r,i)=>{
let val = r[19]=='No';
if(val){
rowsD.push(i+1);
return val;
}
});
if (data.length>0){
tarSheet.getRange(tarSheet.getLastRow()+1,1,data.length,data[0].length).setValues(data);
for (var i = rowsD.length - 1; i>=0; i--) {
srcSheet.deleteRow(rowsD[i]);
}
};
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句