Übergeben von Argumenten / Parametern aus einem Google-Tabellen benutzerdefinierte Funktion, um die Skript-Funktion
Bin ich stecken auf etwas grundlegendes. Wie kann ich Argumente an eine Google-Tabellen-benutzerdefinierte Funktion.
Ich habe eine Funktion in die Apps-Script-code-editor definiert als:
function usageByMonth(range,theDate) {
[ do something with the arguments passed ]
}
In mein Google sheet die Funktion als
=usageByMonth('Source Meter Readings'!A5:A,B1)
Wenn Sie versuchen, die debug-Funktion finde ich, dass die beiden Argumente sind "undefined". Ich habe viele posts und auch kopierten Funktionen direkt aus dem Beispiele, mit dem gleichen Ergebnis.
Können Sie beschreiben, wie Sie festgestellt haben, dass die Argumente undefiniert?
Das problem könnte sein, Ihre
Ich habe festgestellt, dass die Argumente undefiniert, indem man die Elemente, die beim Debuggen der Funktion. Sie angezeigt werden als "undefined". Die Antwort unten ist beschrieben, warum - rendering-Skripts Debuggen im editor meist nutzlos für diese eher gemeinsame Entwicklung Szenario, Bestimmung der Eingabe-Argumente und können Schritt für Schritt durch eine Funktion, die Argumente von einem Blatt.
Das problem könnte sein, Ihre
theDate
argument. Entfernen Sie das argument, und verwenden Sie nur die range
argument. Dann tun Sie etwas sehr einfaches, wie ein Wert aus der Reihe, und Rückgabe.Ich habe festgestellt, dass die Argumente undefiniert, indem man die Elemente, die beim Debuggen der Funktion. Sie angezeigt werden als "undefined". Die Antwort unten ist beschrieben, warum - rendering-Skripts Debuggen im editor meist nutzlos für diese eher gemeinsame Entwicklung Szenario, Bestimmung der Eingabe-Argumente und können Schritt für Schritt durch eine Funktion, die Argumente von einem Blatt.
InformationsquelleAutor Neil Lamka | 2016-01-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ausführen einer Funktion aus der code-editor nicht abrufen der Argumente. In dieser situation, die Argumente werden immer undefined. Dies gilt auch für Situationen wie mit der
onEdit()
einfache trigger. Der einzige Weg, Sie können Holen Sie sich die Argumente an die Funktion übergeben wird, ist durch die Eingabe eine gültige benutzerdefinierte Funktion in der Zelle.Wenn Sie testen möchten, um den code für eine benutzerdefinierte Funktion aus der code-editor, müssen Sie die "hard-code", der argument-Werte.
Auch
Logger.log()
wird nicht alles loggen, was in das Protokoll, wenn eine benutzerdefinierte Funktion berechnet wird, die in dem Blatt.Beginnen mit einer einfachen benutzerdefinierten Funktion, die funktioniert, und bauen auf.
Wenn Sie wollen, eine Reihe, die in den code für die benutzerdefinierte Funktion, müssen Sie verstehen, was ein zwei-dimensionales array ist:
Zwei-Dimensionales Array:
Die Daten aus einem Bereich in einen zweidimensionalen array. Es gibt EINE äußere array, mit der inneren arrays. Die inneren arrays müssen so viele Elemente wie die Anzahl der Spalten in der Palette.
Den oben genannten 2D-array ist für nur 1 Zeile mit zwei Spalten.
Also um eine einfache benutzerdefinierte Funktion erstellen, wie Sie einen test erstellen Sie eine Funktion:
Wenn die Reichweite A1:B5, benutzerdefinierte Funktion gibt den Wert in A1;
Der einzige Weg, um sicher wissen, wenn Ihr argument übergeben wurde, in die .gs-server-Funktion, wenn Sie ein Ergebnis zurück.
Gibt es Eingänge, die Sie nicht verwenden können. Wenn Sie eine Eingabe, die nicht erlaubt ist, dann (Zitat aus der Dokumentation):
Beispielsweise können Sie nicht verwenden, NOW() oder RAND() als argument.
InformationsquelleAutor Alan Wells
Die Funktion-argument-Trennzeichen hängt von spreadsheet-Gebietsschema. Wenn Tabellenkalkulation Gebietsschema verwendet ein Komma als dezimal-Trennzeichen, das argument-Trennzeichen Semikolon:
Sonst wäre es unmöglich, ihn zu überholen Dezimalzahlen in Funktionen.
Haben Sie eine Referenz, beweist dies oder ist dies nur eine Hypothese? Komma hat nicht funktioniert für mich, noch für das original-Plakat, wahrscheinlich wegen unserer Gebietsschema-Einstellungen - zumindest in Excel das Trennzeichen ist locale-abhängig und Google imitiert Excel-syntax.
Es ist in der Tat von der locale abhängig, sondern zum Beispiel in
en-us
das argument{A1;B1}
2 Zeile, 1 Spalte-array von Auswahl Referenzen, und{A1, B1}
1 Zeile, 2 Spalte-array von Bereich Referenzen.Werfen Sie einen Blick auf aktualisierte Antwort. sieht gut für Sie? Wenn Tabellenkalkulation Gebietsschema verwendet ein Komma als dezimal-Trennzeichen, das argument-Trennzeichen Semikolon, sonst wäre es unmöglich, ihn zu überholen Dezimalzahlen in Funktionen. Vielen Dank für die Erhebung dieser, durch die Art und Weise :)!
Die OP ' s Problem ist nicht wirklich im Zusammenhang mit dieser Antwort IMO (Sie wurden einfach mit dem editor zu testen, die nicht die Werte der Funktionsargumente), aber Ihre Bearbeitungen verändert haben, meine Stimmen auf Ihre Antwort
InformationsquelleAutor mrts
Könnte es sein das
A5:A
range sind, versuchen SieA5:A1000
oderA:A
. Mischen einer Zelle AdresseA5
mit einer Spalte AdresseA
wahrscheinlich verwirrt die API.InformationsquelleAutor Gerry
achten Sie auf genaue Fall als Bezeichner sind case-sensitive in Google Script.
ie.
theDate ist nicht das gleiche wie thedate oder TheDate
Dies ist ein häufiges Problem für diejenigen, die nicht verwendet, um case sensitive Sprachen!
InformationsquelleAutor ShayneFromOz