繁体   English   中英

将基于单元格值的行数据复制到 Google 表格中的新工作表

[英]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()); } }

https://docs.google.com/spreadsheets/d/e/2PACX-1vRre5h3CQDhydswUi7NOBRld2j3PmOldBjXqZmjazBaTBkFRDWn6N_uFPEO8enA6LAiLCwhMoeQ8Tdr/pubhtml

试试这种方式:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM