根据单元格值将特定范围而不是整行复制到另一个Google工作表

时间:2017-10-09 18:59:30

标签: google-apps-script

我希望根据编辑特定单元格的时间将“待定”工作表复制到“实时”工作表中选择一行单元格。“

到目前为止,我可以在编辑列中的特定单元格时将整行复制为“是”。

我希望该行中的特定单元格能够复制并移动onEdit,而不是整行。例如,复制,将“挂起”表格中编辑的行的第2,3,5,6列而不是4,7,8等的内容复制到“实时”表格。

此外,当复制到“实时”工作表时,“待定”工作表的第2列与“实时”工作表的第2列对齐。但对于第5和第6列,它们都应移动到第4列以来的列未复制过来。所以“待定”5应该取代“Live”4而“Pending”6应取代“Live”5。

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

if(s.getName() == "Pending" && r.getColumn() == 1 && r.getValue() == "Yes") {
   var row = r.getRow();
   var numColumns = s.getLastColumn();
   var targetSheet = ss.getSheetByName("Live");
   var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
   s.getRange(row, 1, 1, numColumns).copyTo(target);
   }
}

1 个答案:

答案 0 :(得分:1)

试试这个:

function onEdit(e) 
{
   var ss=e.source;
   var sh=ss.getActiveSheet();
   var rg=sh.getActiveRange();
   var row=rg.getRow();
   var col=rg.getColumn();
   Logger.log(col);
  if(sh.getName()=="Pending" && col==1 && rg.getValue()=="Yes") 
  {
     var row = rg.getRow();
     var liveSht = ss.getSheetByName("Live");
     var vA=sh.getRange(row,col,1,6).getValues();
     var liveA=['',vA[0][1],vA[0][2],vA[0][4],vA[0][5]];
     liveSht.appendRow(liveA);
  }
}