仅将onEdit脚本限制为SourceSheet

时间:2019-12-26 00:29:16

标签: google-apps-script google-sheets

此代码可以正常工作,但当我尝试编辑目标表时,会返回到源表。我在目标表中尝试的任何修改都会将我带回到源表。

function onEdit(event) {
// assumes source data in sheet named TOP UP NEEDED
// target sheet of move to named ONLINE RELOCATION

var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.setActiveSheet(ss.getSheetByName('TOP UP NEEDED'), true);
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "TOP UP NEEDED" && r.getColumn() == 18 && r.getValue() == true) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("ONLINE RELOCATION");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).copyTo(target);
 }
}

我尝试将下面的代码添加到第二行,以将其保留在目标表上,但效果不好

ss.setActiveSheet(ss.getSheetByName('TOP UP NEEDED'), true);

我真的只希望onEdit在源表单上工作

能帮忙吗

1 个答案:

答案 0 :(得分:0)

function onEdit(e) {
  var sh=e.range.getSheet();
  if(sh.getName()!='TOP UP NEEDED')return;
  if(e.range.columnStart==18 && e.value=="TRUE") {
    var tsh=e.source.getSheetByName("ONLINE RELOCATION");
    var trg=tsh.getRange(tsh.getLastRow()+1,1);
    sh.getRange(e.range.rowStart,1,1,sh.getLastColumn()).copyTo(trg);
  }
}