Google apps script 如何将特定行从一个工作表复制到另一个工作表(谷歌应用程序脚本)

Google apps script 如何将特定行从一个工作表复制到另一个工作表(谷歌应用程序脚本),google-apps-script,google-sheets,Google Apps Script,Google Sheets,这是我的第一篇帖子,所以请原谅我,如果这个问题的措辞与平台不太一样的话 我目前正在编写一个谷歌应用程序脚本,该脚本应该搜索一张工作表(名称:“[概述]所有案例”)及其行,以在Y列中找到某个值。该特定值为“否”。如果一行具有此值,则应将该行复制到另一张图纸的最后一行(“OPS_漏斗”)。然后该行应存在于两张图纸中。有人能帮忙吗 我已经经历了无数的线程,并没有能够收集到一个解决方案。到目前为止,我的解决方案不起作用,您可以在这里看到: function copy_to_OPS_FUNNEL() {

这是我的第一篇帖子,所以请原谅我,如果这个问题的措辞与平台不太一样的话

我目前正在编写一个谷歌应用程序脚本,该脚本应该搜索一张工作表(名称:“[概述]所有案例”)及其行,以在Y列中找到某个值。该特定值为“否”。如果一行具有此值,则应将该行复制到另一张图纸的最后一行(“OPS_漏斗”)。然后该行应存在于两张图纸中。有人能帮忙吗

我已经经历了无数的线程,并没有能够收集到一个解决方案。到目前为止,我的解决方案不起作用,您可以在这里看到:

function copy_to_OPS_FUNNEL() {
  
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var srcSheet = ss.getSheetByName("[Overview] All_Cases");
  var tarSheet = ss.getSheetByName("OPS_FUNNEL_new");
  var lastRow = srcSheet.getLastRow();
  
  for (var i = 2; i <= lastRow; i++) {

    var cell = srcSheet.getRange("Y" + i);

    var val = cell.getValue();

    if (val == 'No') {
      
      var srcRange = srcSheet.getRange("A" + i + ":B" + i);
      var sourcevalues = srcRange.getValues();
      
      var tarRow = tarSheet.getLastRow();
      var tarRange = tarSheet.getRange("A" + (tarRow + i) + ":B" + (tarRow + i));
      
      tarRange.setValues(sourcevalues);

      srcSheet.getRange("Y"+(i+0).toString()).setValue("Yes");

  }
  else{

  } 
}
}




功能复制到操作漏斗(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var srcSheet=ss.getSheetByName(“[概述]所有案例”);
var tarSheet=ss.getSheetByName(“OPS_Tunnel_new”);
var lastRow=srcSheet.getLastRow();
对于(var i=2;i)解释:
你有两个目标:

  • 将工作表
    [概述]中Y列中包含“否”的所有案例
    中的行复制到
    OPS\u漏斗\u new
    工作表中

  • 复制完成后,将工作表
    [概述]中的“否”更改为“是”

  • 三大改进:

    • 建议不要反复调用
      getRange
      setRange
      ,阅读了解更多信息

    • 您不需要for循环和if语句来查找列Y中包含“No”的数据。相反,您可以使用一行代码来查找这些数据:

      const data = srcSheet.getDataRange().getValues().filter(r=>r[24]=='No');
      
    • 然后,用一行代码将其复制到目标工作表:

      const data = srcSheet.getDataRange().getValues().filter(r=>r[24]=='No');
      
    tarSheet.getRange(tarSheet.getLastRow()+1,1,data.length,data[0].length).设置值(data);

    解决方案:
    感谢您的解决方案!它几乎可以完美地工作。是否有其他方法仅复制A列中的值?或从特定范围(例如:“A:T”)。提前感谢!@user14523871我的问题是您想要什么?列“A”或范围“A:T”?我只想将列“A”中的值从“概述所有案例”复制到“OPS\U漏斗”。您能再帮我做一件事吗?如果我想复制完整的行及其值和格式并将其粘贴到我的targetsheet中,我该如何更改您的上述解决方案?复制后,我想从源代码表中完全删除该行。条件是列中再次出现“否”(例如T)。非常感谢!@user14523871 Hi不幸的是stackoverflow不允许后续问题。请发布有关该修改的新问题。对于由此带来的不便,非常抱歉。请随时在此处提供新问题的url,以便我可以更快地找到它。