Google表格:根据条件复制行数

时间:2016-06-04 11:43:41

标签: google-apps-script

我有一张包含许多列的工作表。我尝试在Google Apps脚本中创建一个功能,将所有行复制到另一张工作正常的工作表。

我想添加一个复制行的条件,即如果列'V'等于'YES'则会复制该行。

这是我到目前为止所拥有的。我刚刚开始玩Google Apps脚本,我没有任何其他编程语言经验。我在这里得到的是我在本网站上发现的内容,我尝试根据反复试验进行更改,所以请耐心等待:)

function prepareExport() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  //Get year & month
  var now= new Date();
  var year = now.getYear();
  var thismonth = ("0" + (now.getMonth() + 1)).slice(-2);
  var lastmonth = ("0" + now.getMonth()).slice(-2);

  // Source
  var lastmonthsheet = ss.getSheetByName([year] + "-" + [lastmonth]);
  var thismonthsheet = ss.getSheetByName([year] + "-" + [thismonth]);

  // Target
  var exportsheet = ss.getSheetByName("Export");

  // Set source ranges
  var lastmonthdata =                    lastmonthsheet.getSheetValues(2,1,lastmonthsheet.getLastRow(),21);
  var thismonthdata = thismonthsheet.getSheetValues(2,1,thismonthsheet.getLastRow(),21);

  // Write values
  exportsheet.getRange(exportsheet.getLastRow()+1, 1, lastmonthdata.length,21).setValues(lastmonthdata);
  exportsheet.getRange(exportsheet.getLastRow()+1, 1, thismonthdata.length,21).setValues(thismonthdata);

}

1 个答案:

答案 0 :(得分:0)

如果单元格Vx的值为"是",请获取第x行的值

  1. 获取cpy的值,其列V为"是"

      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName("sheetname");
    
      var cpy = []; //arrays to be copied
    
      for (i=1;i<sheet.getLastRow();i++){
        var vRng = sheet.getRange(i,22);
        if (vRng.getValue() !== "YES"){continue} //"YES" is case sensitive
        cpy.push(vRng.getRow())
      }
      Logger.log(cpy);
    }
    
  2. 在for循环中使用cpytcpy获取行的其余部分(带有值)。

      for (i=0;i<cpy.length;i++){
        var tcpy = sheet.getRange(cpy[i],1,1, sheet.getLastColumn()).getValues());
      //in this for loop, you can add your setValues(tcpy)
      }