it-swarm.com.de

Übergeben von Argumenten/Parametern von einer benutzerdefinierten Funktion für Google Sheets an die Skriptfunktion

Ich stecke auf etwas Grundlegendem fest. Wie übergebe ich Argumente an eine benutzerdefinierte Funktion von Google Sheets?.

Ich habe eine Funktion im Apps Script-Code-Editor definiert als:

function usageByMonth(range,theDate) {
    [ do something with the arguments passed ]
}

In meinem Google Sheet wird die Funktion als verwendet

=usageByMonth('Source Meter Readings'!A5:A,B1)

Beim Versuch, die Funktion zu debuggen, stelle ich fest, dass die beiden Argumente "undefiniert" sind. Ich habe mir viele Beiträge angesehen und sogar Funktionen direkt aus den Beispielen mit dem gleichen Ergebnis kopiert.

8
Neil Lamka

Durch Ausführen einer Funktion im Code-Editor werden die Argumente nicht abgerufen. In diesem Fall sind die Argumente immer undefiniert. Dies gilt auch für Situationen wie die Verwendung des einfachen Triggers onEdit(). Die einzige Möglichkeit, die Argumente an die Funktion zu übergeben, besteht darin, eine gültige benutzerdefinierte Funktion in die Tabellenzelle einzugeben.

Wenn Sie Code für eine benutzerdefinierte Funktion im Code-Editor testen möchten, müssen Sie die Argumentwerte hart codieren.

Außerdem protokolliert Logger.log() nichts im Protokoll, wenn eine benutzerdefinierte Funktion im Arbeitsblatt berechnet wird.

Beginnen Sie mit einer einfachen benutzerdefinierten Funktion, die funktioniert, und bauen Sie darauf auf.

Wenn Sie einen Bereich in den Code für die benutzerdefinierte Funktion übergeben möchten, müssen Sie verstehen, was ein zweidimensionales Array ist:

Zweidimensionales Array:

[  [inner Array One],  [inner Array Two], [etc]  ]

Die Daten aus einem Bereich werden in ein zweidimensionales Array gestellt. Es gibt EIN äußeres Array mit inneren Arrays. Die inneren Arrays enthalten so viele Elemente wie Spalten im Bereich enthalten sind.

[  ['single value from first column', 'single value second column']  ]

Das obige 2D-Array besteht nur aus einer Zeile mit zwei Spalten.

Um eine einfache benutzerdefinierte Funktion als Test zu erstellen, erstellen Sie eine Funktion:

function myCustomFunction(argOne) { 
  return argOne[0][0];
};

Wenn der Bereich A1: B5 war, gibt die benutzerdefinierte Funktion den Wert in A1 zurück.

=myCustomFunction(A1:B5)

Die einzige Möglichkeit, sicher zu sein, ob Ihr Argument an die .gs-Serverfunktion übergeben wurde, besteht darin, ein Ergebnis zurückzugewinnen.

Es gibt Eingänge, die Sie nicht verwenden können. Wenn Sie eine Eingabe verwenden, die nicht zulässig ist, dann (um aus der Dokumentation zu zitieren):

Wenn eine benutzerdefinierte Funktion versucht, einen Wert zurückzugeben, der auf einer dieser flüchtigen integrierten Funktionen basiert, wird Loading ... auf unbestimmte Zeit angezeigt.

Beispielsweise können Sie NOW () oder Rand () nicht als Argument verwenden.

8
Sandy Good

Das Trennzeichen für Funktionsargumente hängt vom Gebietsschema der Kalkulationstabelle ab. Wenn das Gebietsschema der Tabelle Komma als Dezimaltrennzeichen verwendet, ist das Argumenttrennzeichen ein Semikolon:

=usageByMonth('Source Meter Readings'!A5:A; B1)

Andernfalls wäre es unmöglich, Dezimalstellen in Funktionen zu übergeben.

1
mrts

Dies kann der A5:A-Bereich sein, versuchen Sie es mit A5:A1000 oder A:A. Das Mischen einer Zellenadresse A5 mit einer Spaltenadresse A verwirrt wahrscheinlich die API.

0
Gerry