2016-06-04 11 views
0

Ich habe ein Blatt, das eine Reihe von Spalten enthält. Ich habe versucht, eine Funktion in Google Apps Script zu erstellen, um alle Zeilen in ein anderes Blatt zu kopieren, das einwandfrei funktioniert.Google Tabellen: Zeilen kopieren basierend auf der Bedingung

Ich möchte eine Bedingung hinzufügen, die Zeilen kopiert werden, d. H. Wenn die Spalte 'V' gleich 'YES' ist, wird die Zeile kopiert.

Das ist was ich bisher habe. Ich habe gerade angefangen, mit Google Apps Script herumzuspielen und habe keine anderen Programmierkenntnisse. Was ich hier bekommen ist, was ich auf dieser Seite gefunden habe, und ich habe versucht, Änderungen basierend auf Versuch und Irrtum so tragen Sie bitte mit mir :)

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); 

} 

Antwort

0

Wenn der Wert der Zelle Vx „JA“ ist, erhalten, die Werte der Zeile x

  1. die Werte für cpy suchen, die Zeilen, deren Spalte V "JA"

    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. Verwenden Sie cpy in einer for-Schleife. tcpy erhält den Rest der Zeile (mit Werten).

    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) 
        } 
    
Verwandte Themen