【问题标题】:Copy over a specific range not whole row to another google sheet based on cell value根据单元格值将特定范围而不是整行复制到另一个谷歌工作表
【发布时间】:2017-10-09 18:59:29
【问题描述】:

我希望根据何时编辑特定单元格以说“是”,将行中的选定单元格从“待处理”工作表复制到“实时”工作表。

到目前为止,当列中的特定单元格被编辑为“是”时,我能够复制整行。

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

此外,当复制到“实时”表时,“待处理”表的第 2 列与“实时”表的第 2 列等对齐。但是对于第 5 列和第 6 列,它们都应该移过一列,因为没有复制第 4 列。所以“Pending” 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);
   }
}

【问题讨论】:

    标签: google-apps-script


    【解决方案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);
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-05-28
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多