2016-10-13 21 views
1

Ich versuche, jede leere Zeile in einer Tabelle zu löschen. Wenn eine Zeile mit Werten eine leere Zelle enthält, möchte ich auch diese Zeile löschen.Wie würde ich jede leere Zeile bekommen?

Ich möchte nicht nur die Zeilen löschen, die hinter der Zeile mit den letzten Werten liegen, ich möchte jede leere Zeile löschen.

Zum Beispiel

-1 2 3 4 5 
-1 2 3 4 5 
-   << delete row 
-1 2 3 4 5 
-   << delete row 
-   << delete row 
-1 2 3 4 5 
-1 2 4 5 << delete row -- cell is blank 
-   << delete row 

.getDataRange scheinen nicht die leeren Zeilen zu erhalten, so wie würde ich mich über alle Zeilen für Schleife in einem bekommen?


bearbeiten

var artistFile = SpreadsheetApp.openById(fileId); //open artists spreadsheet 
var artistFileRows = artistFile.getActiveSheet().getMaxRows(); //get number of rows in spreadsheet -- 1 = no values (only headers are in the sheet), 2+ = values (headers + values are in the sheet) 

Logger.log(artistFileRows); 
var startRange = "A1"; 
var endRange = "F" + artistFileRows; 
var totalRange = startRange + ":" + endRange; 
Logger.log(totalRange); 
var allValues = artistFile.getRange(totalRange).getValues(); 

for (var a = 0; a < allValues.length; a++) 
{ 
    Logger.log("row " + parseInt(a + 1) + ": " + allValues[a]); 

    if (allValues[a] === '') 
    { 
    Logger.log("true"); 
    } 
    else 
    { 
    Logger.log("false"); 
    } 
} 

var artistFile = SpreadsheetApp.openById(fileId); //open artists spreadsheet 
var artistFileRows = artistFile.getActiveSheet().getMaxRows(); //get number of rows in spreadsheet -- 1 = no values (only headers are in the sheet), 2+ = values (headers + values are in the sheet) 

Logger.log(artistFileRows); 
var startRange = "A1"; 
var endRange = "F" + artistFileRows; 
var totalRange = startRange + ":" + endRange; 
Logger.log(totalRange); 
var allValues = artistFile.getRange(totalRange).getValues(); 

for (var a = 0; a < allValues.length; a++) 
{ 
    //Logger.log("row " + parseInt(a + 1) + ": " + allValues[a]); 

    for (//iterate through each value in the row) 
    { 
    Logger.log(//each value in the row); 
    } 
} 

Code:

for (var a = 0; a < allValues.length; a++) 
{ 
    //Logger.log("row " + parseInt(a + 1) + ": " + allValues[a]); 

    for (var b = 0; b < allValues[a].length; b++) 
    { 
    Logger.log(allValues[a][b]); 

    if (allValues[a][b] === '') 
    { 
     Logger.log("true"); 
     //artistFile.deleteRow(a); 
    } 
    } 
} 

Ausführung transcr ipt:

[16-10-13 19:24:54:885 EDT] 10.0 
[16-10-13 19:24:54:885 EDT] A1:F10 
[16-10-13 19:24:54:917 EDT] Date 
[16-10-13 19:24:54:918 EDT] h1 
[16-10-13 19:24:54:918 EDT] h2 
[16-10-13 19:24:54:919 EDT] h3 
[16-10-13 19:24:54:919 EDT] h4 
[16-10-13 19:24:54:920 EDT] h5 
[16-10-13 19:24:54:921 EDT] d2 
[16-10-13 19:24:54:921 EDT] td2 
[16-10-13 19:24:54:922 EDT] ca2 
[16-10-13 19:24:54:922 EDT] cr2 
[16-10-13 19:24:54:923 EDT] t2 
[16-10-13 19:24:54:923 EDT] ns2 
[16-10-13 19:24:54:924 EDT] d3 
[16-10-13 19:24:54:924 EDT] td3 
[16-10-13 19:24:54:924 EDT] ca3 
[16-10-13 19:24:54:925 EDT] cr3 
[16-10-13 19:24:54:925 EDT] t3 
[16-10-13 19:24:54:926 EDT] ns3 
[16-10-13 19:24:54:926 EDT] 
[16-10-13 19:24:54:926 EDT] true 
[16-10-13 19:24:54:927 EDT] 
[16-10-13 19:24:54:927 EDT] true 
[16-10-13 19:24:54:927 EDT] 
[16-10-13 19:24:54:928 EDT] true 
[16-10-13 19:24:54:928 EDT] 
[16-10-13 19:24:54:929 EDT] true 
[16-10-13 19:24:54:929 EDT] 
[16-10-13 19:24:54:929 EDT] true 
[16-10-13 19:24:54:930 EDT] 
[16-10-13 19:24:54:930 EDT] true 
[16-10-13 19:24:54:930 EDT] 
[16-10-13 19:24:54:931 EDT] true 
[16-10-13 19:24:54:931 EDT] 
[16-10-13 19:24:54:932 EDT] true 
[16-10-13 19:24:54:932 EDT] 
[16-10-13 19:24:54:932 EDT] true 
[16-10-13 19:24:54:933 EDT] 
[16-10-13 19:24:54:933 EDT] true 
[16-10-13 19:24:54:933 EDT] 
[16-10-13 19:24:54:934 EDT] true 
[16-10-13 19:24:54:934 EDT] 
[16-10-13 19:24:54:934 EDT] true 
[16-10-13 19:24:54:935 EDT] d4 
[16-10-13 19:24:54:935 EDT] td4 
[16-10-13 19:24:54:936 EDT] ca4 
[16-10-13 19:24:54:936 EDT] cr4 
[16-10-13 19:24:54:936 EDT] t4 
[16-10-13 19:24:54:937 EDT] ns4 
[16-10-13 19:24:54:937 EDT] test1 
[16-10-13 19:24:54:938 EDT] test1 
[16-10-13 19:24:54:938 EDT] test1 
[16-10-13 19:24:54:938 EDT] test1 
[16-10-13 19:24:54:939 EDT] test1 
[16-10-13 19:24:54:939 EDT] test1 
[16-10-13 19:24:54:940 EDT] 
[16-10-13 19:24:54:940 EDT] true 
[16-10-13 19:24:54:940 EDT] 
[16-10-13 19:24:54:941 EDT] true 
[16-10-13 19:24:54:941 EDT] 
[16-10-13 19:24:54:941 EDT] true 
[16-10-13 19:24:54:942 EDT] 
[16-10-13 19:24:54:942 EDT] true 
[16-10-13 19:24:54:943 EDT] 
[16-10-13 19:24:54:943 EDT] true 
[16-10-13 19:24:54:943 EDT] 
[16-10-13 19:24:54:944 EDT] true 
[16-10-13 19:24:54:944 EDT] test2 
[16-10-13 19:24:54:945 EDT] test2 
[16-10-13 19:24:54:945 EDT] test2 
[16-10-13 19:24:54:945 EDT] test2 
[16-10-13 19:24:54:946 EDT] test2 
[16-10-13 19:24:54:946 EDT] test2 
[16-10-13 19:24:54:946 EDT] 
[16-10-13 19:24:54:947 EDT] true 
[16-10-13 19:24:54:947 EDT] 
[16-10-13 19:24:54:948 EDT] true 
[16-10-13 19:24:54:948 EDT] 
[16-10-13 19:24:54:948 EDT] true 
[16-10-13 19:24:54:949 EDT] 
[16-10-13 19:24:54:949 EDT] true 
[16-10-13 19:24:54:949 EDT] 
[16-10-13 19:24:54:950 EDT] true 
[16-10-13 19:24:54:950 EDT] 
[16-10-13 19:24:54:951 EDT] true 
+0

Haben Sie das herausgefunden? –

+0

Nein. Ich habe die Zeilen und ich habe die Werte in dieser Zeile durchlaufen, aber als ich versuchte, die Zeile zu löschen, löschte sie mehr nicht leere Zeilen als auch leere Zeilen. – user4411473

+0

Haben Sie versucht, 1 zu a hinzuzufügen, um die Tatsache zu berücksichtigen, dass Zeilen 1-basiert und nicht 0-basiert sind? Überprüfe meine Antwort. –

Antwort

1

Entweder mit der letzten Reihe starten und durchläuft nach hinten oder mit der ersten Reihe starten und verringert Ihren Iterator um 1 jedesmal, wenn ein Löschen durchgeführt wird.

var startRange = "A1"; 
var endRange = "F" + artistFileRows; 
var totalRange = startRange + ":" + endRange; 
var allValues = artistFile.getRange(totalRange).getValues(); 

for (var a = 0; a < artistFileRows; a++) 
{ 
    for (var n = 0; n < allValues[a].length; n++) 
    { 
     if(allValues[a][n] === '') 
    { 
      artistFile.getActiveSheet().deleteRow(a+1); 
      a--; 
      break; 
    } 
    } 


} 
+0

Wie würde ich feststellen, wenn eine Zeile eine leere Zelle enthält oder die ganze Zeile leer ist? Ich kann jede Zeile einschließlich Leerzeichen mit '.getMaxRows()' bekommen - es gibt mir nur eine Zahl wie 10.0 – user4411473

+0

Ich bin mir nicht sicher, wie ich durch alle Zellen iterieren würde ... '.getDataRange' gibt nicht mir jede Zeile, aber '.getMaxRows()' tut. Wie durchkreuze ich '.getMaxRows()', wenn es nur die Zeilennummern gibt? – user4411473

+1

Ich habe dem Beitrag hinzugefügt, was ich bisher gemacht habe. Die if-Anweisung funktioniert ... Ist das der Weg, die Werte zu iterieren und mit '' zu vergleichen? – user4411473