【问题标题】:Copy every row of Data from one sheet that has a given value in column K to another sheet将 K 列中具有给定值的一张工作表中的每一行数据复制到另一张工作表
【发布时间】:2012-06-20 20:46:01
【问题描述】:

我正在制作一个 Google 电子表格,它将使用脚本将每一行数据从一张表中的 K 列“过去 30 天完成”复制到另一张表中。

“工作表”是指每个选项卡。 源选项卡是“Arley”,目标选项卡当前是“ArleysSandbox” 每行都有 ll 列,A-K。整行应结转。 工作表中的总行数将随着时间的推移而增加。 每次我运行脚本时,我都希望它首先清除“ArleysSandbox”上的所有现有数据。 K 列显示“过去 30 天内完成”是一个公式。 我最终会想要从多个工作表中提取并在沙箱工作表上进行编译。

我使用旧论坛的帖子作为起点,但由于缺乏知识而陷入困境。 http://productforums.google.com/forum/#!msg/apps-script/FNGzVkEqZh4/x8WCYtjvpI8J提前感谢您的任何建议。

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:
    //Find current filter and remove     
    var currentFilter = master_sheet.getFilter();
          if ( currentFilter !== null ) {
            master_sheet.getFilter().remove();
          } 
         var master_lr=master_sheet.getLastRow();
         var master_lc=master_sheet.getLastColumn();
    
    
    //Apply filter here
          master_sheet.getRange(1,1,master_lr,master_lc).createFilter();
          var criteria = SpreadsheetApp.newFilterCriteria().setHiddenValues(['Reject','Approved']).build();
          master_sheet.getFilter().setColumnFilterCriteria(45, criteria);
    
          master_sheet.getFilter().getRange().copyTo(harmonize_approvers.getRange(1,1,master_lr-1,master_lc), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
    

    【讨论】:

      【解决方案2】:

      不要被冒犯,但我认为这个论坛不是一个可以免费获取应用程序的市场,它应该为试图自己获得结果的人们带来答案。

      也就是说,这里有一个“骨架”,应该让你走上正确的轨道,我试图向 cmets 解释正在发生的事情。 (没测试,可能需要调试)

      function copy2(){
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var sh = SpreadsheetApp.setActiveSheet(ss.getSheets()[0]); selects the first sheet in your spreadsheet
        var data=sh.getDataRange().getValues();// data is a 2D array, index0 = col A
        // so column k is index 10
        var target=new Array();// this is a new array to collect data
        for(n=0;n<data.length;++n){ // iterate in the array, row by row
          if (data[n][10]=="Done In The Past 30 Days"){ ;// if condition is true copy the whole row to target
          taget.push(data[n]);// copy the whole row
          }
          }
          if(target.length>0){// if there is something to copy
        var sh2=SpreadsheetApp.setActiveSheet(ss.getSheets()[1]); //second sheet of your spreadsheet
        sh2.getRange(1,1,target.length,target[0].length).setValues();// paste the selected values in the 2cond sheet in one batch write
        }
      } 
      

      【讨论】:

        猜你喜欢
        • 2016-03-23
        • 1970-01-01
        • 1970-01-01
        • 2017-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多