copy one row from one sheet to another

前端 未结 2 1880
谎友^
谎友^ 2020-12-20 08:09

I know this has been asked before because I have spent the last 5 hours trying them all from here and even the closed google product forum. I can\'t get any of the loops to

2条回答
  •  有刺的猬
    2020-12-20 08:45

    I don't really agree with user1795832's answer as it doesn't make use of batch writing but simply writes data to sheet 2 each time the condition is true... so why using an array to do that ?

    Try simply to batch write to sheet 2 after the loop is completed and it should work as expected.

    function runReportAllMemCos1() {
      var sheet1 = sskey.getSheetByName('Businesses');
      var sheet2 = sskey.getSheetByName('tempsheet');
    
      var data = sheet1.getRange(1,1, sheet1.getLastRow(), sheet1.getLastColumn()).getValues();
    
      var dest = [];
      for (var i = 0; i < data.length; i++ ) {
        Logger.log(data[i][12]);// just to check if the condition is true sometimes ;-)
        if (data[i][12] == "Associate") { 
          dest.push(data[i]); 
        }
      } // here is the end of the for loop
    
      Logger.log(dest) ; // log the dest array instead
    
      if (dest.length > 0 ) { // if something has been written in your array then batch write it to the dest. sheet
        sheet2.getRange(sheet2.getLastRow()+1,1,dest.length,dest[0].length).setValues(dest);
      }
    }
    

    EDIT : other possibility following your comment to choose the columns you copy

    function runReportAllMemCos1() {
      var sheet1 = sskey.getSheetByName('Businesses');
      var sheet2 = sskey.getSheetByName('tempsheet');
    
      var data = sheet1.getRange(1,1, sheet1.getLastRow(), sheet1.getLastColumn()).getValues();
    
      var dest = [];
      for (var i = 0; i < data.length; i++ ) {
        Logger.log(data[i][12]);// just to check if the condition is true sometimes ;-)
        if (data[i][12] == "Associate") { 
          var destRow = []; // initialise intermediate array
          destRow.push(data[i][1],data[i][2],data[i][12]);// choose here the columns you want to add (here col2, 3 & 13)
          dest.push(destRow); 
        }
      } // here is the end of the for loop
      Logger.log(dest) ; // log the dest array instead
      if (dest.length > 0 ) { // if something has been written in your array then batch write it to the dest. sheet
        sheet2.getRange(sheet2.getLastRow()+1,1,dest.length,dest[0].length).setValues(dest);
      }
    }
    

提交回复
热议问题