Tutorial: Google Spreadsheets mit Google Apps Script erweitern

Published by Philipp Schuster on

Google Spreadsheet: Demo Google Apps Script

Update 2024-04-23: Dieser Artikel ist sehr alt. Der Inhalt ust wahrscheinlich veraltet.

Google Apps Script ist eine interessante Plattform, die durch die Verbindung mit Googles Office Suite interessante Projekte ermöglicht. Ich habe damit beispielsweise einen Cronjob-Ersatz für Webserver umgesetzt. Ich möchte gerne versuchen, die Grundlagen zu erklären, um euch den Weg zu dieser interessanten Plattform zu ebnen. Apps Script ist vielseitig, aber ich habe mich derzeit eigentlich nur auf die Kommunikation zwischen Google Spreadsheet und Apps Script fokussiert.

Was bauen wir in diesem kleinen Tutorial?

Für den Einstieg eine einfache Übersicht, in der ihr euren Namen in ein Feld A schreibt und es in Feld B erscheint. Das Prinzip kennt man zum Beispiel von einem Formular, welches die Eingabe direkt irgendwo einblendet. Schaut auch mal auf die folgenden zwei Screenshots. Im ersten seht ihr das angedeutete Input-Feld und im Screenshot zwei die Änderung, die wenig später umgesetzt wurde.

Google Spreadsheet: Demo Google Apps Script

Google Spreadsheet: Demo Google Apps Script


Google Spreadsheet: Demo Google Apps Script

Google Spreadsheet: Demo Google Apps Script. Die Änderung wurde zügig übernommen.

Was lernen wir in diesem kleinen Tutorial?

Dass Google Apps Script ein Google Spreadsheet erweitern kann und vor allem wie einfach das geht. Außerdem werdet ihr vertraut mit Range-Objekten, welche bei der Kommunikation zwischen Tabelle und Skript quasi die Schnittstelle sind, Triggern in Apps Script und der App-Autorisierung von Apps Scripts. Wenn ihr Google Spreadsheets noch nicht kennst, lernt ihr das direkt auch mit kennen. Klingt das alles nicht wunderbar? :p

Aber nun gut, fangen wir an. Folge einfach den nächsten einfachen Schritten. Sollte einer von euch mit Javascript vertraut sein, wird er schnell sehen, was man alles tolles anstellen kann.

  1. Öffne drive.google.com und lege ein neues Spreadsheet (Tabelle) an.
  2. Passe das Layout ein wenig an, damit es nicht mehr ganz so furchtbar aussieht. Das ist natürlich optional und ihr könnt alles so lassen, wie es ist. Mit diesem einfachen Layout habe ich gearbeitet:
    Google Spreadsheet: Demo Google Apps Script

    Google Spreadsheet: Demo Google Apps Script

  3. Klickt in der Menüleiste auf Tools > Skripteditor. Ein neuer Tab wird sich öffnen. Dort klickt ihr links im Pop-Up auf “Leeres Projekt”. Hier sind wir nun im Google Apps Script Editor.
  4. Als nächstes wechselt ihr den Tab wieder zur Tabelle und sucht euch dort zwei Zellen aus. Eine in die ihr den Namen schreiben möchtet und eine in die der Name geschrieben werden soll. Merkt euch für jede der zwei Zellen die Spalte und Zeile von links oben ausgehend und bei eins beginnend. Also Spalte A ist 1, Spalte B ist 2 und bei den Zeilen steht die Zahl ja sogar direkt dran.
  5. Wechselt nun wieder den Tab zum Apps Script Editor. Dort legen wir eine “function” mit dem Namen “run” an. Alles was in der Datei steht ist dann das hier:
    function run() {
    };
    
  6. Wir werden gleich ein Range-Objekt benötigen. Range-Objekte verwendet man, wenn man etwas aus der Tabelle lesen möchte oder Werte hinein speichern. Das alles ist viel einfacher, als es klingt. Eine Range ist einfach eine “Reichweite” oder “Auswahl”. Man kann sich das so vorstellen, wie wenn man mit dem Cursor eine Zelle anklickt oder mehrere markiert. Das ist eine Range. Und genau das macht Apps Script intern, eine solche Auswahl an Zellen öffnen in der man sich dann relativ zur Tabelle “bewegen” kann.
  7. Hier der Code, den ihr jetzt so komplett bei euch rein kopiert: (“//” und “/* … */” sind Kommentarzeichen)
    function run() {
      // aktives Tabellenblatt = Tabellen-Schnittstelle -> aktuelles Tabellenblatt
      // darin arbeiten wir gleich mit unseren Range-Objekten
      sheet = SpreadsheetApp.getActiveSheet();
      
      /* "Range" bei Zeile 1 und Spalte 3: entspricht nur einer einzelnen markierten Zelle
       * Aus Zelle bei Zeile 1 und Spalte 1 INNERHALB der Range holen wir uns den Inhalt
       * und speichern ihn in Variable 'name' ab.
       */
      var name = sheet.getRange(1, 3).getCell(1, 1).getValue();
      
          /* Da unsere Range nur eine Zelle umfasst könnten wir auch auf die Zellauswahl verzichten
           * und direkt den "Wert"/Inhalt der Zelle holen.
           */// var name = sheet.getRange(1, 3).getValue();
      
      // Range bei Zeile 4 und Spalte 2: Folgenden Wert einspeichern
      sheet.getRange(4, 2).setValue("Dein Name ist: "+name);
    };

    Wir brauchen sozusagen nur drei Zeilen Code um das Gewünschte zu erreichen.

  8. Jetzt klickt ihr oben im Apps Script Editor auf Ressourcen > Trigger des aktuellen Projekts. Ein Trigger ist ein Auslöser, der eine Funktion aufrufen kann, welche wiederum Aktionen startet. Bei Ereignis wählt ihr “Aus Tabelle” statt “Zeitgesteuert” aus und dann im letzten Feld noch “On edit”. Klickt nun in dem Dialog-Feld auf speichern. Jetzt wird jedes mal wenn wir in der Tabelle unterwegs sind und eine Änderung einer Zelle vornehmen die Funktion ausgeführt. So auch wenn wir in das “Input”-Feld einen Wert schreiben.
  9. Wir müssen nun einen Testlauf starten um die App bei Google in eurem Google-Account zu autorisieren, da sie die Berechtigung einfordert eure Google Tabellen zu bearbeiten. Klickt hierfür auf das Starten-Icon, wie im folgenden Screenshot (das dreieckige Symbol). Google Spreadsheet: Demo Google Apps Script
    Ihr werdet zunächst aufgefordert einen Namen für das Projekt festzulegen (z.B. “Test) und dann müsst ihr es per Klick einmalig autorisieren.
    Google Spreadsheet: Demo Google Apps Script
    Die Berechtigung wieder Entfernen ginge dann hier: https://security.google.com/settings/security/permissions
  10. Wechsle nun wieder den Tab zur Tabelle und trage in die zuvor von dir ausgesuchte Zelle einen Namen ein. Wenn alles geklappt hat, ihr auch die Positionen der Zellen richtig angegeben habt, dann sollte wenig später der Name auch in dem anderen Feld erscheinen. Ich hoffe es klappt bei euch und es hat euch ein wenig gefallen.

Ich hoffe, dass euch das hilft.


Philipp Schuster

Hi, I'm Philipp and interested in Computer Science. I especially like low level development, making ugly things nice, and de-mystify "low level magic".

0 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *