Sonntag, 16. Februar 2014

Menüs in Google Apps durch eigene Funktionen erweitern

In meinem letzten Tutorial, habe ich gezeigt, wie man mit Google Apps Script eine Funktion zum Importieren von Kalender-Daten in eine Tabelle erstellt. Skripte aus dem Skripteditor heraus zu starten ist aber nicht sehr komfortabel. Stattdessen können wir für häufiger benötigten Funktionen einfach einen eigenen Menüpunkt in den Google Apps einrichten.

Als erstes öffnen wir aus einem Spreadsheet heraus den Skripteditor. In diesem finden wir bereits die Funktion myFunction() vor, in der wir später den Code unserer eigentlichen Funktion einfügen können.

Damit unser neues Menü von Anfang an zu sehen ist, wenn wir unsere Datei öffnen, verwenden wir eine in Google Apps Script eingebaute Funktion namens onOpen(). Diese Funktion führt unseren Code automatisch bei jedem Öffnen des Dokuments aus.

In der Funktion onOpen() rufen wir zuerst unser aktives Dokument auf, definieren dann unsere Menüpunkten und fügen zuletzt das Menü "Meine Funktionen" dem Dokument hinzu. 

function onOpen() {

  var ss = SpreadsheetApp.getActive();

  var items = [

    {name: 'Zufallszahl einfügen', functionName: 'myFunction'}

  ];

  ss.addMenu('Meine Funktionen', items);

};



Und hier die Erklärung dazu: Die variable ss belegen wir mit unserem gerade aktiven Spreadsheet. Die Variable items füllen wir mit einem Array aus Javascript Objekten die unsere Menüpunkte (für den Anfang nur einen) repräsentieren. Die Eigenschaft name gibt dabei die Beschriftung des Menüpunktes an, functionName verweist auf den Namen der Funktion, welche den eigentlichen Code enthält. In unserem Fall ist das die noch leere Funktion myFunction().

Die letzte Codezeile im Skript fügt dem Spreadsheet ss das Menü "Meine Funktionen" hinzu und stattet es mit den Menüpunkten items aus. Dafür verwenden wir die Methode addMenu().

Um den Menüpunkt testweise anzuzeigen müssen wir unser Dokument einmal schließen und erneut öffnen, um die Funktion onOpen() auszulösen. Und siehe da: Ganz rechts, neben dem Hilfe-Menü finden wir unser neues Menü "Meine Funktionen". Aber beim Klick auf unseren Menüpunkt "Zufallszahl einfügen" stellen wir enttäuscht fest, dass nichts weiter passiert.



Damit der Menüpunkt seinem Namen Ehre macht, fügen wir deshalb einige Zeilen Javascript in die Funktion myFunction() ein:

function myFunction() {

  var response = Math.floor(Math.random() * 100);

  var ss = SpreadsheetApp.getActive();

  var mycell = ss.getActiveCell();

  mycell.setValue(response);

};

Der Variablen response weisen wir dabei einfach eine Zufallszahl zwischen 1 und 100 zu. Dann finden wir die aktive Zelle im aktiven Spreadsheet, indem wir die Methode getActiveCell() verwenden. Zuletzt schreiben wir die Zufallszahl response mit der Methode setValue() in die aktive Zellen.

Um dieses Skript auszuprobieren müssen wir nun nicht den Play-Button im Skripteditor anklicken. Stattdessen können wir jetzt einfach unser neues Menü verwenden.

Keine Kommentare:

Kommentar veröffentlichen