2016-08-05 23 views
3

Ich beabsichtige, mein Skript auf Google Blatt laufenSie können nicht CjwKEAjwiYG9BRCkgK-G45S323oSJABnykKAhI-

umwandeln, was ich tue ist, die Werte der Zellen wiederherzustellen, und verwenden Sie eine if-Anweisung eine Kennung Zelle vergleichen mit einer anderen Benutzer-ID-Zelle.

Wenn sie unterschiedlich sind, möchte ich die gesamte Zeile eliminieren, wenn sie gleich sind, möchte ich die gesamte Zeile so lassen, wie sie ist.

ich den Fehler:

You can not convert CjwKEAjwiYG9BRCkgK-G45S323oSJABnykKAhI-

Mein Code:

function myFunction() { 
    function Lento() { 
     var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 
     var sheet = spreadsheet.getActiveSheet(); 
     var rows = sheet.getDataRange(); 
     var values = rows.getValues(); 
     var numCols = rows.getNumColumns(); 
     var numRows = rows.getNumRows(); 
     for (var r=1; r<values.length; r++) { 
      var row = values[r], 
       identificador = row[0], 
       palabraclave = row[1], 
       ciudad = row[2], 
       fecha = row[4], 
       pais = row[5], 
       idusuario = row[6], 
       nombre = row[7], 
       email = row[8], 
       telefono = row[9], 
       mensaje = row[10], 
       urllanding = row[11], 
       fechausuario = row[12]; 

      Logger.log(identificador); 
      Logger.log(palabraclave); 
      Logger.log(ciudad); 
      Logger.log(fecha); 
      Logger.log(pais); 
     } 

     if (row[0] !== row[6]) { 
      spreadsheet.deleteRow(row); 
     } 
    } 

    Lento(); 
} 
+0

Bitte siehe [fragen] und [die perfekte Frage] (http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/). – FrankerZ

+0

ein Hinweis, welche Zeile Ihres Codes den Fehler erzeugt? –

Antwort

1

Ich denke, Ihr Problem mit spreadsheet.deleteRow(row) ist. Zuerst möchten Sie die Zeile auf diesem bestimmten Blatt löschen, also sollte es sheet.deleteRow(...) sein. Das andere Problem ist, dass deleteRow erwartet eine ganze Zahl als ein Argument, aber Sie haben row zur Verfügung gestellt, die ein Array ist. Um die Zeile zu löschen, mögen Sie

sheet.deleteRow(r+1); 

tun, weil r die ganze Zahl auf die Position in der Anordnung verbunden ist, nicht row. Lesen Sie die Dokumentation auf deleteRow(rowPosition):

https://developers.google.com/apps-script/reference/spreadsheet/sheet#deleterowrowposition

+0

Hallo, Ich könnte weiter in meinem Code gehen, jetzt halte ich ein Array GCLIDs ein Blatt und ein anderes Blatt und verglichen, aber beim Löschen der Zeile sagt mir, dass diese Zeilen die Grenzen überschreiten. – AitorUdabe

0

Jetzt habe ich die Lösung zu dem, was ich tue.

sowie es gibt Fehler, da die Comprovación des Arrays null ist daher nicht funktionieren, würde der Code aussehen.

function myFunction() { 
function Lento() { 
    var h1 = SpreadsheetApp.getActive().getSheetByName('Hoja 1'); 
    var h2 = SpreadsheetApp.getActive().getSheetByName('Hoja 2'); 
    var rowsh1 = h1.getDataRange(); 
    var valuesh1 = rowsh1.getValues(); 
    var numColsh1 = rowsh1.getNumColumns(); 
    var numRowsh1 = rowsh1.getNumRows(); 
    var rowsh2 = h2.getDataRange(); 
    var valuesh2 = rowsh2.getValues(); 
    var numColsh2 = rowsh2.getNumColumns(); 
    var numRowsh2 = rowsh2.getNumRows(); 
    var idusuario = []; 
    var identificador = []; 
    //recorremos fila a fila y cogemos los datos de la hoja1 
    for (var r = 1; r < valuesh2.length; r++) { 
     var rowh2 = valuesh2[r], 
      nombre = rowh2[1], 
      email = rowh2[2], 
      telefono = rowh2[3], 
      mensaje = rowh2[4], 
      urllanding = rowh2[5], 
      fechausuario = rowh2[6]; 
     idusuario[r] = rowh2[0]; //Guardamos los gclid del usuario en un array 

    } 
    //recorremos fila a fila y cogemos los datos de la hoja2 
    for (var r = 1; r < valuesh1.length; r++) { 
     var rowh1 = valuesh1[r], 
      palabraclave = rowh1[1], 
      ciudad = rowh1[2], 
      fecha = rowh1[4], 
      pais = rowh1[5]; 
     identificador[r] = rowh1[0]; //Guardamos los gclid en un array 

    } 


    for (var i = identificador.length - 1; i >= 0; i--) { 
     var encontrado = false; 
     for (var y = 1; y < idusuario.length; y++) { 

      if (identificador[i] == null || idusuario[y] == null) continue; 
      if (identificador[i] == idusuario[y]) { 
       encontrado = true; 
       break; 
      } 
     } 

     if (!encontrado) { 

      h1.deleteRow(i + 1); 
     } 
    } 

} 

Lento(); 
}