[英]Copy row to another sheet on Google Sheets based on criteria and cell value
[英]Copy row data based on cell value to new sheet in Google Sheets
我想制作一个应用程序脚本,以允许将一行数据复制到另一张“历史记录”表中。
我尝试了几种不同的脚本。 虽然有些工作,但最终,由于某种原因,他们退出了工作。 此外,它们没有我想要的完整性。
我希望选中一个复选框,然后从自定义 UI 按钮中进行选择。 单击“复制数据”按钮后,需要将包含复选框的行数据复制到新工作表中。 复制数据后,我希望 function 删除其中有复选标记的行,但不是公式。 最好将其设置为自定义 UI 菜单中的另一个按钮。
A 列包含员工姓名。 当 A 列从下拉列表中看到输入时,B 列会自动填充当前日期。 C 列包含复选框。 D 列是通用工作清单。
我需要以下类似的东西吗?
function onOpen(e) { let ui = SpreadsheetApp.getUi(); ui.createMenu('PAS Data').addItem('Copy Data', 'copyData').addToUi(); } function copyData() { var ss=SpreadsheetApp.getActive(); var sheet=SpreadsheetApp.getActiveSheet(); var range=sheet.getActiveCell(); if (sheet.getName()=="ShopWorkList" && range.getColumn()==3 && range.getValue()=="TRUE") { var targetSheet=ss.getSheetByName("Sheet2"); var targetRange=targetSheet.getRange(targetSheet.getLastRow() + 1, 1);//column one sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange); sheet.deleteRow(range.getRow()); } }
试试这种方式:
function copyData() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName("ShopWorkList");
const osh = ss.getSheetByName("Sheet2");
const vs = sh.getRange(17, 1, sh.getLastRow() - 16, sh.getLastColumn()).getValues();
let oA = [];
let d = 0;
vs.forEach((r, i) => {
if (r[2] == true) {
oA.push(r);
sh.deleteRow(i + 17 - d++);
}
});
if (oA.length > 0) {
osh.getRange(osh.getLastRow() + 1, 1, oA.length, oA[0].length).setValues(oA);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.