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

Posted

技术标签:

【中文标题】根据单元格值将特定范围而不是整行复制到另一个谷歌工作表【英文标题】: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);
   

【问题讨论】:

【参考方案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);
  

【讨论】:

以上是关于根据单元格值将特定范围而不是整行复制到另一个谷歌工作表的主要内容,如果未能解决你的问题,请参考以下文章

基于 rhandsontable 中单元格值的颜色行

VBA 按钮 - 基于单元格值而不是 ActiveCell

根据行数据复制特定单元格并粘贴到特定工作表上

pandas Dataframe,将特定值从一个单元格移动到另一个单元格

谷歌脚本:根据TRIGGER将公式计算的值从一张纸复制到另一张(编辑或时间驱动)

如何使 JTable 单元格不可编辑但应该能够选择和复制当前单元格中的值