Google App脚本电子表格复制和粘贴行在粘贴时是重复行

时间:2015-05-04 17:36:58

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

已创建Google电子表格代码,用于将一行数据复制并粘贴到同一电子表格中的目标工作表中。但是,当行被粘贴到目标工作表时,它会粘贴两次。我只需要将它粘贴到目标位置一次......不是两次。

请参阅表格:https://docs.google.com/spreadsheets/d/1dL9FkxPawP9kvqJ4SwfRLqcv9HAUjHhZCfG9wxOwlDY/edit?usp=sharing

脚本:

function onEdit(event)
{ 
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();
  var curDat = new Date();
 
  var valSent = r.getValue().toString().toLowerCase();
  
  if(s.getName().toString() == "Referrals 2015" && r.getColumn() == 15 && valSent == "sent" && valSent!="")
  {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Auths and F&D");
    
    var target = targetSheet.getRange(targetSheet.getLastRow()+1, 1);
    var target1 = targetSheet.getRange(targetSheet.getLastRow()+1, 3);
    var target2 = targetSheet.getRange(targetSheet.getLastRow()+1, 4);
    var target3 = targetSheet.getRange(targetSheet.getLastRow()+1, 5);    
    var tRow =targetSheet.getLastRow();
    
    s.getRange(row,1,1,2).copyTo(target);
    s.getRange(row,5,1, 1).copyTo(target1);
    s.getRange(row,12,1, 1).copyTo(target2);
    s.getRange(row,13,1, 2).copyTo(target3);
    targetSheet.getRange(tRow+1, 7).setValue(curDat);
    targetSheet.getRange("B" +targetSheet.getLastRow()+3+":Z"+targetSheet.getLastRow()+3).copyTo(targetSheet.getRange("B" + targetSheet.getLastRow()), {formatOnly: true});  
    targetSheet.getRange(tRow+1,1,1,7).setBackgroundColor("#ffff00");
    
    r = null;
    s = null;
    valSent="1";
  }
}

1 个答案:

答案 0 :(得分:0)

onEdit()作为简单触发器自动运行。如果你在资源>这个项目触发的脚本触发器中设置它,你需要删除它,因为它将作为一个简单的触发器运行一次,并再次作为已安装的触发器运行。