【问题标题】:Google Sheet Apps Script: How do I edit the Apps Script below to only copy over data from Column A to L and P to S?Google Sheet Apps 脚本:如何编辑下面的 Apps 脚本以仅将数据从 A 列复制到 L 和 P 到 S?
【发布时间】:2020-10-13 22:22:43
【问题描述】:

如何编辑下面的 Apps 脚本以仅将数据从 A 列复制到 L 和 P 到 S? (基本上,我希望它跳过列 M、N、O 以及 S 之后的所有列。

function onEdit(event) {
  // assumes source data in sheet named Tab 1
  // target sheet of move to named Tab 2
  // test column with yes/no is col 20 or T
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(s.getName() == "Tab 1" && r.getColumn() == 20 && r.getValue() == "yes") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Tab 2");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
}

提前谢谢你, 此致, 罗伯特

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    将两个范围(A-LP-S)分别复制到不同的目标范围,如下所示:

    function onEdit(e) {
      //e.source.toast("Entry");
      //console.log(JSON.stringify(e));
      const sh=e.range.getSheet();
      if(sh.getName()=="Sheet1" && e.range.columnStart==20 && e.value=="TRUE") {
        const tsh=e.source.getSheetByName('Sheet2');
        const nr=tsh.getLastRow()+1;
        sh.getRange(e.range.rowStart,1,1,12).moveTo(tsh.getRange(nr,1,1,12));
        sh.getRange(e.range.rowStart,16,1,4).moveTo(tsh.getRange(nr,16,1,4));
        sh.deleteRow(e.range.rowStart);
      }
    }
    

    注意:我使用了“Sheet1”和“Sheet2”,并且还使用了复选框的标准值,而不是“是”和“否”。我还使用了“e”而不是“事件”,并且使用了事件对象中可用的数据。

    【讨论】:

    • 你会考虑添加一个你做了什么的解释吗?类似于“分别检索和使用源范围和目标范围”的内容。
    猜你喜欢
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多