脚本可根据单元格的值将一行数据从一张表复制到特定表

时间:2020-06-29 20:46:36

标签: google-apps-script google-sheets google-sheets-formula copy-paste

我正在尝试创建一个脚本,以根据单元格的值将一行数据从一张纸复制到另一张纸。

但是实际上,当在主工作表中输入新的信息行时,它将复制该行并将该行的数据根据​​特定单元格的值放置到另一工作表中。在这种情况下,它是公用事业公司。 例如,如果创建了客户,而他们拥有的公用事业公司是United Power,则我希望获得客户信息所在的工作表副本,并将其添加到指定的United Power工作表中,依此类推,与其他公用事业公司的(共3个)

我不断收到以下错误: TypeError:无法读取未定义的属性“源”(第4行,文件“代码”)

我将粘贴至目前为止。 (到目前为止,我只有一个的代码) 如果需要,我还可以链接电子表格。

 function onEdit(event) {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(s.getName() == "Contracts" && r.getColumn() == S && r.getValue() == "United Power") {
  
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("United Power");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
  } 
}

1 个答案:

答案 0 :(得分:0)

您本可以这样写:

您需要将S更改为数字

function onEdit(e) {
  const sh=e.range.getSheet();
  if(sh.getName()=="Contracts" && e.range.columnStart==19 && e.value=="United Power") {
    const tsh = e.source.getSheetByName("United Power");
    const target = tsh.getRange(tsh.getLastRow() + 1, 1);
    sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()).moveTo(target);
  } 
}