1

Ich versuche, Daten über ein Skript einzugeben, so dass es die erste leere Zeile und in dieser Zeile die erste leere Spalte findet und die Daten in diese Spalte eingeben. Für jede Reihe gibt es mehrere Spalten, in die Informationen eingefügt werden können, und dies geschieht in separaten Anfragen, von denen ich weiß, dass sie ein anderes Problem sind, das ich lösen muss, aber ich bin noch nicht dort angekommen.Google Tabellenskript - Eigenschaft 1.0 kann nicht gelesen werden?

var answer = e.parameter["value"] 
    var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("key")); 
    var sheet = doc.getSheetByName(e.parameter["sheet"]); 
    var row = sheet.getLastRow(); 
    var column = sheet.getLastColumn() 
    var range = sheet.getRange(row, 1, 1, column); 
    var data = range.getValues(); 

    for(var i = 1; i <= column; i++){ 
    if (data[1][i] == "" || data[1][i] == " "){ 
     sheet.getRange(1, i).setValue(answer); 
     break; 
    } 
    } 

Ich erhalte diese Störung, wenn es ausgeführt wird: "message": "von undefined "1.0 \," name " "Can not Eigenschaft \ lesen":" Typeerror", "Dateiname": "Code (Datenbank-Makro) " "Zeilennummer": 107, "Stapel":" \ tut-Code (Datenbank-Makro): 107 (doPost

EDITED Code:

for(var i = 1; i <= column; i++){ 
    if (data[i] == ""){ 
     sheet.getRange(row, i).setValue(answer); 
     break; 
    } 
    } 
+0

so wie ich @Austin verstehe, müssen Sie zuerst einen Weg finden, "erste leere Zeile zu finden", dann zu jeder Zelle in dieser Zeile (Spalten) gehen richtig? –

+0

@oserek Yup! Du hast es. –

+1

JavaScript-Arrays beginnen bei Null, nicht 1. Verwenden Sie den Skript-Debugger von Apps, um den Fehler zu finden. –

Antwort

1

ich teile Ihnen Blatt, auf dem Sie können sehen, wie ich die erste leere Zeile (Zellenwert) im Bereich A1 finde: A10

https://docs.google.com/spreadsheets/d/12w3Xi2CsOQ7u0i6gB5T7SWhG5_Kkv_04UJOp2ouNpF0/edit?usp=sharing

function myFunction() { 
    var aa = SpreadsheetApp.getActiveSheet().getRange("A1:A10").getValues(); 
    var ui = SpreadsheetApp.getUi(); 
    var ix = null; 
    for(var i = 0 ; i < aa.length; i++){ 
    if(aa[ i ] == "") { ix = i; break; } 
    } 
    ui.alert("first empty row is: A" + (ix+1)); 
} 

hth, prost

1

Ihr Problem hier liegt:

Javascript-Array-Index bei 0 beginnt nicht 1, wie durch @ZigMandel so ändern Sie den Code unten erwähnt:

for(var i = 1; i <= column; i++){ 
    if (data[1][i] == "" || data[1][i] == " "){ // This i believe is your line 107 
     sheet.getRange(1, i).setValue(answer); 
     break; 
    } 
    } 

zu diesem:

for(var i = 0; i < column; i++){ 
     if (data[0][i] == "" || data[0][i] == " "){ 
      sheet.getRange(1, i).setValue(answer); 
      break; 
     } 
     } 

Der Fehler, den Sie erhalten, ist wahrscheinlich wegen dieser Aussagedaten [1] [i]. Da Arrayindex beginnt bei 0 und bekam man eine Reihe von Ihrem diesem Code:

var range = sheet.getRange(row, 1, 1, column); 
    var data = range.getValues(); 

Es gibt keinen Index 1 ist, also Daten [1] ist nicht definiert.

+0

Vielen Dank dafür. Ich habe meinen Code ein wenig bearbeitet, um besser zu dem zu passen, was ich versuche, und ich stieß auf ein anderes Problem. –

+0

Ich habe meine ursprüngliche Frage mit meinem neuen Code bearbeitet. Derzeit registriert es nicht, dass Daten [i] leer sind, obwohl ich es ausgedruckt habe, um es zu bestätigen, und was ich bekomme, ist [["", "", ""]]]. Es ist also leer, aber es zeigt nicht an, dass es leer ist. –

+0

Daten sind 2D-Array, daher erhalten Sie das oben genannte. In einem 2D-Array wie Daten = [[1,2], [3,4]], Daten [0] = [1,2], die ein anderes Array und daher! = "" Ist. –

Verwandte Themen