2016-04-14 6 views
0

Ich bin ziemlich neu bei Google Script und ich habe an einer Codezeile gearbeitet, die mich gerade stört. Was ich versuche, ist, dass der Computer eine Reihe von Zellen in der Tabellenkalkulation durchschaut und dann alle ausdruckt, aber bei der letzten Zeile stehen bleibt. Aber, wie ich versucht habe, die Funktion .getLastRow() in der for-Schleife zu verwenden oder nur eine Variable zu machen, funktioniert es nicht. (Es gibt einige Teile, bei denen der Code redundant ist und nicht mit dem Problem, so dass Sie das ignorieren.)Wie benutze ich die Funktion .getLastRow() in Google Skript

function myFunction() 
{ 

    var spreadSheet = SpreadsheetApp.openById("1F4zEJXKN3iobK8b89Ub94dd77Tdk70H0X8aFCSCmvRs"); 
    var activeSheetOne = spreadSheet.getSheetByName("New Family Responses"); 
    var activeSheetTwo = spreadSheet.getSheetByName("Existing Family Responses"); 

    var readingGender = activeSheetOne.getRange("E3:E").getValues(); 
    var lastRow = readingGender.getLastRow(); 
    var loopVar = 0; 

    for (var i=0; i < lastRow; i++) { 
    Logger.log(readingGender[loopVar][0]); 
    loopVar = loopVar + 1; 
    } 

} 

Antwort

0

getLastRow ist eine Methode der Klassen Sheet und Range, was einfach bedeutet, dass, wenn Sie schreiben something.getLastRow(), dass something muss ein Blatt oder ein Bereich sein. (Wie Zig Mandel erwähnt, gibt es eine issue die Funktionalität des Bereichsverfahren betreffend;. Normalerweise ist es für ein Blatt verwendet)

in Ihrem Code activeSheetOne ein Blatt ist, getRange("E3:E") Anwendung erhalten Sie einen Bereich, und dann Anwendung getValues() Sie erhalten nur eine Array von Werten. Dies bedeutet eine gewöhnliche JavaScript array, mit der Sie JavaScript-Methoden und -Eigenschaften verwenden, nicht Google Apps Script-Methoden.

So ersetzen die Linie var lastRow = readingGender.getLastRow(); durch

var lastRow = readingGender.length; 

length wo die Länge eines Arrays ist.

Auch Ihr Code sowohl mit i und loopVar ist eine Mischung aus for und while Schleifen. Du brauchst beides nicht; eine for Schleife wird ausreichen.

for (var i=0; i < lastRow; i++) { 
    Logger.log(readingGender[i][0]); 
} 

Vorschlag: lernen die Grundlagen von JavaScript, zum Beispiel mit Codecademy, bevor sie mit Google Apps Script arbeiten.

+0

bewusst sein, dass range.getLastRow() ist zur Zeit die gleiche wie sheet.getLastRow() sehen https://code.google.com/p/google-apps-script-issues/issues/detail?id=1349 –

+0

Guter Punkt; Ich habe es nie selbst für eine Reihe benutzt und ging den Code in der Frage aus. Bearbeitet. –