Kann ich mit Javascript eine benutzerdefinierte Funktion für Zahlen schreiben?

8

Es hat mich immer geärgert, dass ich keine benutzerdefinierte Funktion für Zahlen schreiben kann. Es würde die Tabelle für mich so viel nützlicher machen. In Google Apps-Tabellen können Sie dies mit Javascript tun.

Mit anderen Worten, Sie schreiben

function myCustomStuff(a, b) { ... }

und eine Zelle kann enthalten:

=myCustomStuff(A1, B2)

Jetzt haben sie in Yosemite Javascript-Automatisierung. Ich frage mich, ob es möglich ist.

Rob N.
quelle

Antworten:

2

Nein - das Einfügen einer Funktion scheint nicht einfach zu skripten zu sein.

Ein einfaches Makro könnte machbar sein und Sie könnten mit diesen beiden Referenzen beginnen:

Dieser Link ist die Entwicklerdokumentation zum Verbinden des Skripts mit der Numbers-App.

Diese Automatisierungssite war lange Zeit der beste Ort, an dem ich AppleScript-Tools gelernt und implementiert habe.

Wenn Sie neu sind, können Sie dem Zahlen-Tutorial in AppleScript folgen, um sicherzustellen, dass Sie eine funktionsfähige Aufgabe haben, und diese dann in der neuen Sprache neu codieren. Dann müssen Sie die Hooks in Numbers ermitteln und prüfen, ob Ihre spezifische Aufgabe ohne Verwendung der Objective-C-Bridge ausgeführt werden kann, die eine Integration auf niedrigerer Ebene in Apps unter OS X ermöglicht.

bmike
quelle
Ich habe mir die Numbers-Skriptbibliothek angesehen und sehe keine Möglichkeit, eine benannte Funktion zur Verwendung in Gleichungen zu registrieren. Sie können eine Berechnung für eine Reihe von Zellen ausführen und andere Zellen füllen. Das hilft mir, aber es ist nicht ganz das, wonach ich gesucht habe.
Rob N
@RobN Ich werde mein Ja umkehren - ich habe keine Möglichkeit gesehen, eine Funktion einzubetten, und hatte gehofft, dass dies möglich ist, aber es sieht sicher so aus, als müssten Sie etwas sehr Schweres tun, wie das Programmieren einer Systemerweiterung / Swizzling die Methoden in Zahlen, um eine Funktion zu injizieren.
bmike
Cool. Ich habe Ihre Antwort akzeptiert und eine Funktionsanfrage bei Apple eingereicht. Vielleicht eines Tages.
Rob N