application development using google apps script

72
Advanced Software Engineering Hochschule Pforzheim - Sommersemester 2016 Advanced Software Engineering Vorlesung 01.04.2016 : Anwendungsentwicklung mit Dr. Andreas Walter Google Apps Script [email protected]

Upload: adoubleu

Post on 23-Jan-2018

393 views

Category:

Internet


8 download

TRANSCRIPT

Page 1: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Advanced Software Engineering

Vorlesung 01.04.2016 : Anwendungsentwicklung mit Dr. Andreas Walter

Google Apps Script [email protected]

Page 2: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Anwendungsentwicklung mit Google Apps Script

Inhaltsverzeichnis

- Einleitung: Generelle Arten der Anwendungsentwicklung

- Einsatzbeispiele für Google Apps Script

- Use-Case: Verwaltung von Buchungen einer Ferienwohnung

- Getting Started: Implementierungsbeispiele mit Google Apps Script

- Aufgaben für Praktikum

Anwendungsentwicklung mit Google Apps Script2 01.04.2016

Page 3: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Einleitung: Generelle Arten der Anwendungsentwicklung

Grad der Verteilung von Diensten nach Intranet und Cloudanwendungen

- Intranet: Ressourcen sind in internem Firmennetz

- Cloud: Ressourcen sind über Internet, zumeist als Clouddienst

verfügbar (Amazon AWS, Microsoft Azure, Google Cloud)

Alles Lokal (Intranet) – höchste Sicherheitsanforderungen, z.b. Banken

- Datenbank, Dienste lokal

- Lokale Entwicklungsumgebung und Ausführung

Hybrid (Intranet & Cloud) – hohe Sicherheitsanforderungen, z.B.

Krankenhäuser (Patientendaten lokal, Statistiken zentral)

- Einige Dienste in Cloud (z.B. Abrechnungsdaten)

- Datenbank im Intranet

- Lokale Entwicklungsumgebung und Ausführung

Anwendungsentwicklung mit Google Apps Script3 01.04.2016

Page 4: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Generelle Arten der Anwendungsentwicklung (2)

Hybrid mit lokaler Ausführung (Cloud) – webbasierte Spiele

- z.b. Dienste in Cloud, Datenbank in Cloud

- Lokale Ausführung, z.b. Spiel mit hohen Anforderungen an Grafikkarte

Cloud Only – Webanwendungen (public, einfache Skalierbarkeit)

- Browser zur Ausführung der Anwendung

- Browser zum Zugriff auf Entwicklungsumgebung

- Dienste und Datenhaltung in der Cloud

Google Apps Script: nutzt Cloud-Umgebung von Google

wenig Installationsaufwand, komfortable Entwicklung webbasierter

Anwendungen, Leistungsfähige Cloudumgebung zur Ausführung der

Anwendungen.

Anwendungsentwicklung mit Google Apps Script4 01.04.2016

Page 5: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Google Apps Script: Übersicht

Anwendungsentwicklung mit Google Apps Script5 01.04.2016

- Erlaubt die Erstellung von

(Web)Anwendungen unter Verwendung

von JavaScript.

- Erweiterung von Google Anwendungen

und eigene Menüs in Google

Anwendungen

- Automatisierung zwischen Google

Diensten und zu externen Diensten

- Einbindung in Google Sites

(Komponenten einer Webseite)

- Speichern von Daten / Dateien in

Google Drive

- Code wird mit Hilfe einer

browserbasierten

Entwicklungsumgebung erstellt,

getestet und publiziert

https://www.google.com/script/start/

Page 6: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

EINSATZBEISPIELE FÜR

GOOGLE APPS SCRIPT

Google Apps Script

Anwendungsentwicklung mit Google Apps Script6 01.04.2016

Page 7: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Add-Ons für Google Anwendungen

Add-Ons erweitern den Funktionsumfang bestehender Anwendungen.

Vergleichbar mit Macros in Microsoft Office

Beispiel: ein ausgewählter Text soll automatisch von Google Translate

übersetzt werden

- Google Translate: Textübersetzung von ausgewählter Sprache in

Zielsprache

- Technik: webbasierte Formulare (HTML, POST Requests)

Anwendungsentwicklung mit Google Apps Script7 01.04.2016

Page 8: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Eigene Menüs in Google Anwendungen

Eigene Menüs erlauben zusätzliche Methoden, z.B. Berechnungen

Beispiel: Eigenes Menü zur Berechnung anderer Maßeinheiten

- Zusätzliches Menü in Google Sheets, erlaubt Umrechnung von Meter –

Meilen, schreibt Ergebnis in neue Zelle

- Technik: Auslesen von Tabellenzellen und Schreiben neuer Werte

Anwendungsentwicklung mit Google Apps Script8 01.04.2016

Page 9: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Auswertungen von Formularen

Anwendungsentwicklung mit Google Apps Script9 01.04.2016

Formulare erlauben das strukturierte Sammeln von Daten zur späteren

Auswertung

Beispiel: Sammeln von Vortragsthemen für eine Konferenz

Technik:

- Google Forms zur Abfrage von Daten wie Vortragstitel, Startzeit

- Google Apps Script zur Auswertung

- API zu Google Calendar zum Erstellen von Termineinträgen

Page 10: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Automatisierung in Google Anwendungen

Regelmäßig ausgeführte Tasks erlauben die Automatisierung von

umfangreichen Abläufen.

Beispiel: Erstellung von Statistiken

zu empfangenen Emails

Technik

- Geplante Tasks starten die Ausführung der Anwendung, hier am

Monatsanfang

- Auslesen von Emails in Gmail

- Schreiben von Statistikdaten Sheets

- Erstellung von Charts auf Basis der Tabellendaten

Anwendungsentwicklung mit Google Apps Script10 01.04.2016

Page 11: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Automatisierung zwischen Google Anwendungen

Anwendungen, welche mehrere Google Dienste verwenden, z.B. Gmail

zum Emailversand, Google Sheets zur Speicherung von Datenhttp://googleappsdeveloper.blogspot.de/2012/04/approval-workflow-using-apps-script.html

Beispiel

Zustimmung zu bestimmten Vorgängen

durch Vorgesetze und Kommissionen

Technik

- Automatisches lesen und versenden

von Emails

- Anzeigen von Formularen

- Automatisches Speichern von

Formulareingaben in Google Sheets

Anwendungsentwicklung mit Google Apps Script11 01.04.2016

Page 12: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Automatisierung zu Externen Diensten

Daten werden in Google Anwendungen gesammelt, z.B. Formularen.

Nach Eingabe werden diese zu externen Anwendungen übertragen.

Beispiel: senden von Formulareingaben zu Salesforce

Technik

- Events: Ereignisse können zeitgesteuert oder nach einem Ereignis wie

eingehenden Formularen ausgelöst werden

- Übertragen von Formulardaten zu externer REST Schnittstelle

http://googleappsdeveloper.blogspot.de/2012/03/integrating-google-docs-with.html

Anwendungsentwicklung mit Google Apps Script12 01.04.2016

Page 13: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Speicherung von Daten / Dateien

Google Apps Script verwendet zur Datenhaltung den Dienst Google Drive

(Cloudbasierter Datenspeicher). Daten können einfach geschrieben und

gelesen werden

Anwendungsentwicklung mit Google Apps Script13 01.04.2016

Page 14: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

USE-CASE: VERWALTUNG

VON BUCHUNGEN EINER

FERIENWOHNUNG

Google Apps Script

Anwendungsentwicklung mit Google Apps Script14 01.04.2016

Page 15: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Use Case Beschreibung Buchungen

Eine Ferienwohnung publiziert ihr Angebot zu verfügbaren

Buchungskapazitäten bei Buchungsportalen wie booking.com,

airbnb.com, traum-ferienwohnungen.de etc.

- Eingehende Buchungen von den Portalen werden per Email gemeldet.

- Buchungen sollen automatisch ausgelesen werden und strukturiert

gespeichert werden.

- Dem Gast soll eine Buchungsbestätigung geschickt werden. Dem

Betreiber eine Email mit einer Zusammenfassung zur Buchung.

- 14 Tage vor Anreise sollen dem Gast Informationen rund um die

Anreise und den Attraktionen rund um die Ferienwohnung geschickt

werden.

- Ein Tag vor Anreise soll dem Betreiber automatisch eine Email mit

Rechnung, Quittung und Anreiseinformationen für den Gast gesandt

werden.

.

Anwendungsentwicklung mit Google Apps Script15 01.04.2016

Page 16: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

1) Automatisches Auslesen von Buchungen aus Portalen

Portal hier: booking.com. Kunde bucht bei Booking.com, Booking.com

schickt Email an Betreiber.

Anwendungsentwicklung mit Google Apps Script16 01.04.2016

Page 17: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

2) Automatisches Auslesen der Buchungsdetails

Pro Buchung stellt booking.com die Buchungsdetails bereit

Anwendungsentwicklung mit Google Apps Script17 01.04.2016

Page 18: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Ausführung durch Apps Script

1) Task liest regelmäßig Gmail Emails (alle 10 Minuten)

2) Sobald eine Email mit Betreff „Booking.com - Eine neue Buchung!“

des Absenders [email protected] vorliegt, wird diese gelesen

3) Ein HTML Parser ( Teil von Apps Script ) liest den in Email

enthaltenen Link. Über reguläre Ausdrücke findet der Parser wichtige

Informationen in der Seite (Name des Buchers, Anreise, Abreise…)

4) Die Buchungsinformationen werden in Google Sheets geschrieben

(getrennt nach Buchungsdaten und Kundendaten)

5) Eine Email wird an den Buchenden geschickt, um die Buchung zu

bestätigen und weitere Informationen zur Bezahlung zu senden

6) Dem Betreiber wird eine Email zugestellt, um die Buchung direkt

anzuzeigen (ohne sich erst auf Booking.com einloggen zu müssen)

7) 14 Tage vor Anreise (per Tasks) wird dem Buchenden eine Email mit

Informationen zur Buchung geschickt

8) Ein Tag vor Anreise wird Rechnung an Betreiber per PDF geschickt

Anwendungsentwicklung mit Google Apps Script18 01.04.2016

Page 19: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

3) Schreiben von Buchungsdaten in Google Sheets

Anwendungsentwicklung mit Google Apps Script19 01.04.2016

Page 20: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

4) Automatisches Erstellen von Rechnungen

- Ein täglich gestarteter Task prüft, ob am nächsten Tag eine Anreise ist

- Falls ja, werden die Buchungsdaten aus den entsprechenden Sheets

gelesen.

- Eine Vorlage in Google Docs wird geladen und die entsprechenden

Buchungsdaten eingefügt.

- Aus dem Dokument wird automatisch ein PDF generiert und an

Betreiber geschickt

- Über ein externes SMS

Gateway bekommt

Kunde eine SMS geschickt,

um nach der geplanten

Anreisezeit zu fragen.

Anwendungsentwicklung mit Google Apps Script20 01.04.2016

Page 21: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Use Case Beschreibung Buchungskalender

Der Buchungskalender soll die vorhandenen Buchungen in übersichtlicher

Form darstellen.

- Zu jedem Kalendertag soll die Verfügbarkeit angezeigt werden

- Für verfügbare Tage sollen die Raten angezeigt werden. Es muss

möglich sein, für bestimmte Tage Saisonraten zu hinterlegen mit

höheren Preisen

- Für Tage mit Buchungen muss durch einfachen Klick auf den Tag

angezeigt werden, welcher Gast gebucht hat

Anwendungsentwicklung mit Google Apps Script21 01.04.2016

Page 22: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Buchungskalender

Ein stündlich gestarteter Task liest alle Buchungen aus Buchungstabelle.

Ein weiteres Sheet „Kalender“ wird aktualisiert mit den Informationen zur

Verfügbarkeit.

Anwendungsentwicklung mit Google Apps Script22 01.04.2016

Page 23: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Buchungsdetails

Jede Buchung ist verlinkt zu einer Buchungsdetailseite.

Technik: Buchungsdetailseite ist eine Webanwendung. Als HTTP GET

Parameter nimmt sie BuchungsId entgegen. Intern wird die Buchung

geladen und als Webseite angezeigt. Anzeige über Google Web Toolkit

Funktionalitäten

Anwendungsentwicklung mit Google Apps Script23 01.04.2016

Page 24: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Use Case Beschreibung: Webseite zur Ferienwohnung

Die Ferienwohnung soll durch eine Webseite im Internet gezeigt werden.

- Die Webseite soll die Verfügbarkeiten des aktuellen und des nächsten

Tages auf der Webseite anzeigen

- Ein Buchungsformular soll es ermöglichen, Verfügbarkeiten

anzuzeigen

- Die aktuellen Preise sollen auf der Webseite angezeigt werden

- Zusätzlich weitere statische Seiten wie Bilder, Informationen, etc.

Anwendungsentwicklung mit Google Apps Script24 01.04.2016

Page 25: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Webseite: Anzeige Verfügbarkeiten heute / morgen

Webseite: www.apartment-baden.com

Anwendungsentwicklung mit Google Apps Script25 01.04.2016

Page 26: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Webseite: Anzeige Verfügbarkeiten / Buchung

Anwendungsentwicklung mit Google Apps Script26 01.04.2016

Page 27: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Webseite - Technik

- Webseite läuft auf eigenem Webserver

- Servlet-Container mit REST Service – wird über einen Task stündlich

von Apps Script aufgerufen – die aktuellsten Verfügbarkeiten und

Preise werden übertragen.

Servlet generiert aus neuesten Daten statische HTML Seiten der

Homepage.

- REST Service in Apps Script – erlaubt Eingabeparameter wie Anreise /

Abreisedatum und Anzahl Personen. Service prüft Verfügbarkeit und

gibt entsprechend Preise zurück.

- Webseite: JQUERY zur Anfrage des REST Services per AJAX

Request nach Preisen, automatische Aktualisierung der Webseite

- CSS / JQUERY zur korrekten Skalierung der Webseite je nach Gerät

(Responsive Web Design)

Anwendungsentwicklung mit Google Apps Script27 01.04.2016

Page 28: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Use Case Beschreibung: Portal für Betreiber

Dem Betreiber soll eine webbasierte Portalseite zur Verfügung gestellt

werden.

- Der Betreiber soll Zugriff auf den Buchungskalender haben

- Ein Buchungsformular soll den Eintrag neuer Buchungen erlauben

- Statistiken sollen zeigen, wie sich Buchungen nach Monaten verteilen

- Das Portal soll zeigen, wie häufig die Webseite besucht wird

- Falls AdWords auf Suchmaschine gebucht werden, soll gezeigt

werden, wie häufig diese geschalten wurde und mit welchen

Suchbegriffen

- Ein Dashboard soll einen schnellen Überblich zum erzielten Umsatz

und den nächsten Buchungen geben.

Anwendungsentwicklung mit Google Apps Script28 01.04.2016

Page 29: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Google Sites: Portalbasierte Webseiten erstellen

https://www.google.com/sites/overview.html

Google Sites erlaubt die Erstellung von Webseiten.

Ein Content Management System erlaubt die Pflege einzelner Seiten

Jede Seite kann wahlweise mit statischen Inhalt, aber auch mit

dynamischem Inhalt gefüllt werden.

Dynamische Inhalte können publizierte Sheets sein, aber auch mit Apps

Script erstellte Webseiten

Anwendungsentwicklung mit Google Apps Script29 01.04.2016

Page 30: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Dashboard

Dashboard enthält Komponenten, die aus Sheets publiziert wurden.

Jedes Sheet kann als Webkomponente publiziert werden.

Es aktualisiert seinen Inhalt dann automatisch nach Änderungen

Anwendungsentwicklung mit Google Apps Script30 01.04.2016

Page 31: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Publiziertes Sheet Buchungskalender

Komplettes Sheet Buchungskalender als Webkomponente publiziert

Anwendungsentwicklung mit Google Apps Script31 01.04.2016

Page 32: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Publizierte Web App: Buchungsformular

Buchungsformular wurde implementiert unter Verwendung von Google

Web Toolkit (GWT) Komponenten. Diese sind in Apps Script integriert.

Anwendungsentwicklung mit Google Apps Script32 01.04.2016

Page 33: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Auswertung über mehrere Dienste

Hier: Auswertung von Buchungen, AdWords und Google Analytics

Gegenüberstellung von Anzahl Buchungen, Besuchern und AdWords

Nutzung in einer Komponente.

Abfrage von Google Analytics und Google AdWords API, schreiben der

Daten in Excel Sheet.

Anwendungsentwicklung mit Google Apps Script33 01.04.2016

Page 34: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Daten aus externen Diensten: hier AdWords

Abfrage der AdWords Daten. AdWords API wird regelmäßig abgefragt,

Ergebnisse in Sheets geschrieben

Authentifizierung

Apps Script erlaubt drei Arten von Authentifizierung

- Single-Sign-On: gilt für alle direkten Google Dienste, z.b. GMail.

Benutzer muss einmalig Apps Script Authentifizieren für Zugriff

- Apps Permissions: gilt für weitere Google Dienste wie AdWords.

Entwickler muss Zugriff einmalig Authentifizieren über Developer

Console

- OAuth: hauptsächlich externe Dienste (siehe Folie Twitterintegration)

https://developers.google.com/apps-script/guides/services/authorization

Anwendungsentwicklung mit Google Apps Script34 01.04.2016

Page 35: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

AdWords: Auslesen häufiger Suchwörter

Hier: häufigste Suchwörter der letzten Woche

Anwendungsentwicklung mit Google Apps Script35 01.04.2016

Page 36: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Zusammenfassung Use Case

Wie gezeigt erlaubt Google Apps Script die umfangreiche Automatisierung

von Abläufen innerhalb von Google Anwendungen, aber auch aus

externen Diensten beziehungsweise zu externen Diensten.

- Datenhaltung: per Google Sheets (Google Drive), auch zu weiteren

Diensten BigData oder dokumentbasiert

- Tasks / Events: per Tasks / Events kann direkt auf ein Ereignis reagiert

werden, z.b. eingehende Email

- Webanwendungen: erlauben die strukturierte Eingabe von Daten und

Weiterverarbeitung (siehe Buchungsformular)

- Reports / Statistiken: Generierung umfangreicher Reports und

Statistiken auf Basis von gesammelten Daten

- Google Sites: Erstellung von skalierbaren Webseiten auf Basis der

Google Cloud Infrastruktur.

Anwendungsentwicklung mit Google Apps Script36 01.04.2016

Page 37: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

GETTING STARTED:

IMPLEMENTIERUNGSBEISPIELE

MIT GOOGLE APPS SCRIPT

Google Apps Script

Anwendungsentwicklung mit Google Apps Script37 01.04.2016

Page 38: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Generelle Schritte

1) Google Apps Script erfordert einen Google Account. Falls nicht

vorhanden, kann dieser kostenlos erstellt werden

2) Genereller Einstieg zu Anwendungen mit Google

Apps Script ist über Google Drive.

Öffne drive.google.com

3) Einfachster Einstieg ist über Google Sheet.

Klicke Button „New“ -> „Google Sheets“

4) Gebe dem Sheet einen Namen, z.b.

„Apps Script Tutorial“

5) Um den browserbasierten

Apps Editor

zu öffnen, klicke auf

„Tools“ -> „Skripteditor“

Anwendungsentwicklung mit Google Apps Script38 01.04.2016

Page 39: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Der Apps Script Editor: Hauptansicht

Der Editor erlaubt

im mittleren Bereich

das Erstellen von

Funktionen.

Das Pulldown darüber

erlaubt das Auswählen

einer Methode.

Über den Play

Button wird diese

ausgeführt. Debug geht

mit dem Käfer Symbol

daneben.

Die Konsoleausgabe ist

verfügbar über

View -> Logs oder Ctrl-Enter.

Anwendungsentwicklung mit Google Apps Script39 01.04.2016

Page 40: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Implementierungssprache: JavaScript 1.6

Google Apps Script wird mittels der Programmiersprache JavaScript 1.6

implementiert.

Einige Beispiele, Details siehe z.B.

http://www.html-seminar.de/javascript-datentypen.htm

// variablenzuweisung, untypisiert

var responseText=„Hallo“ // String

var maxCount = 1 // int

// for Schleifen

for (var i = 0; i < result.length; i++) { // process object result[i] }

// Webseite laden -> gibt HTML / XML / JSON zurück

var response = UrlFetchApp.fetch(url, options);

Anwendungsentwicklung mit Google Apps Script40 01.04.2016

Page 41: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Neue Dateien erstellen und Versionierung

Über das Menü

File -> New -> Script File

können weitere Skriptdateien

dem Projekt hinzugefügt werden.

Dies erlaubt das Aufteilen von

Programmteilen nach ihrer

Funktion (vgl. Bibliotheken), z.b.

eine Datei für Speichermethoden

Über das Menü

File -> Manage Versions

kann das Projekt versioniert werden.

Dies ermöglicht das Publizieren einer

bestimmten Version z.b. als

Webanwendung

Anwendungsentwicklung mit Google Apps Script41 01.04.2016

Page 42: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Einbinden von eigenen und 3rd Party Bibliotheken

Einzelne Projekte können als Bibliothek in anderen Projekten

wiederverwendet werden (Ressources -> Libraries …. Ebenso können

Bibliotheken von Drittanbietern beziehungsweise von Google

eingebunden werden. (Ressources -> Advanced Google Services…)

Einbindung von Gmail Api

Aktivierung:

Folge Link zu

Google Developers Console.

Suche API, hier Gmail.

Klicke auf „Aktivieren“ Benutzung: Gmail.<function>, z.b.

Gmail.newLabel()

Anwendungsentwicklung mit Google Apps Script42 01.04.2016

Page 43: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

6 Einfache Schritte zur Webanwendung

1) Erstelle eine Skript Datei „examplewebapp.gs“

2) Erstelle eine Methode doGet(e) (HTTP GET).

3) Füge folgenden Text ein

function doGet() {

return ContentService.createTextOutput("simple web app output");

}

4) Klicke „File“ -> „Manage Versions“, erstelle

neue Version z.b. „FirstWeb“

5) Klicke „Deploy“ -> „Publish as WebApp“

6) Teste Anwendung, klicke auf „Test Web

App for your latest code“

Anwendungsentwicklung mit Google Apps Script43 01.04.2016

Page 44: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Auslesen von Request Parametern aus URL

In einer Webanwendung, können bei GET und POST Anfragen die

Parameter einfach ausgelesen werden

Beispiel: site?action=list&maxValues=5

function doGet(e) <- entry point GET Request, e enthält Parameter

{

var action=e.parameter.action;

// action = list

var maxValues=e.parameter.maxValues

// maxValues=5

}

Anwendungsentwicklung mit Google Apps Script44 01.04.2016

Page 45: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Emails schreiben und lesen

Email Funktion über Google Mail kann direkt über Script aufgerufen

werden

Email schreiben

MailApp.sendEmail(<receiver>, <subject>, <mailtext>);

Emails lesen: Library GmailApp.

Beispiel hier: Suche Mails eines Absenders

var threads = GmailApp.search('[email protected]');

var messagesFound=threads.length;

Logger.log("messages found :" +messagesFound);

for (var i = 0; i < threads.length; i++) {

// read email , z.B var subject=threads[i].getFirstMessageSubject();

}

Anwendungsentwicklung mit Google Apps Script45 01.04.2016

Page 46: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Daten in Sheets schreiben (1)

Per Google Sheets kann in Sheets geschrieben werden

Vorraussetzungen

- Id des Google Sheets. Lese aus URL Teil <id>

https://docs.google.com/spreadsheets/d/<id>/edit

Falls https://docs.google.com/spreadsheets/d/1234/edit => id = 1234

- Name des Sheets in das geschrieben werden soll, z.b. Sheet1

Auf ein Sheet zugreifen

var sheet = SpreadsheetApp.openById(„<id>").getSheetByName(„<sheet-

name");

Anwendungsentwicklung mit Google Apps Script46 01.04.2016

Page 47: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Daten in Sheets schreiben (2)

Anzahl vorhandener Zeilen ermitteln. Erste Zell hat Koordinaten (1,1)

// anzahl Zeilen bereits vorhanden

var numRows = rows.getNumRows();

// Zeile, in die nächster Eintrag zu schreiben ist

var rowNr=numRows+1;

var cellNr=1;

Zeilenwerte schreiben

// write in cell 1

sheet.getRange(rowNr, cellNr).setValue(“Zelle 1”);

// write in cell 2

cellNr++;

sheet.getRange(rowNr, cellNr).setValue(“Zelle 2”);

Anwendungsentwicklung mit Google Apps Script47 01.04.2016

Page 48: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Daten aus Sheets lesen

Voraussetzungen wie bei Schreiben : id, Name Tabellenblatt

// Referenz auf Sheet

var sheet = SpreadsheetApp.openById(„<id>").getSheetByName(„<sheet-name");

// rows : enthält Referenz auf die Daten, values = die Werte

var rows = sheet.getDataRange();

var numRows = rows.getNumRows();

var values = rows.getValues();

for (var x=1;x<numRows;x++)

{

var row = values[x];

resultentry.value1 = row[0];

resultentry.value2 = row[1];

Anwendungsentwicklung mit Google Apps Script48 01.04.2016

Page 49: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Sheets publizieren

Sheets können publiziert werden, um seinen Inhalt per Browser aufrufen

oder in Google Sites integrieren zu können.

File -> Publish to the web

Anwendungsentwicklung mit Google Apps Script49 01.04.2016

Page 50: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Daten von externen Diensten lesen (1)

Google Apps Script ermöglicht das Auslesen von Diensten. Hierzu wird

Authentification (OAuth) unterstützt, ebenso das Lesen struktierierter

Daten wie z.B. JSON Serialisierung.

Beispiel: Lesen der neuesten Tweets von Twitter

OAuth 1 / 2

Serviceschnittstelle erfordert Authentifizierung mittels Tokens.

Nach einer Registrierung beim Service erhält man

Consumer Key und Consumer Key Secret

Beispiel: Twitter , https://apps.twitter.com/app/

- Erstelle eine neue App, danach werden die Tokens angezeigt

Anwendungsentwicklung mit Google Apps Script50 01.04.2016

Page 51: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Daten von externen Diensten lesen (2) – OAuth Token

Ziel von OAuth Anfragen sind der Erhalt eines gültigen Tokens

// Encode consumer key and secret

var tokenUrl = "https://api.twitter.com/oauth2/token";

var tokenCredential = Utilities.base64EncodeWebSafe(

TWITTER_CONSUMER_KEY + ":" + TWITTER_CONSUMER_SECRET);

// Obtain a bearer token with HTTP POST request

var tokenOptions = {

headers : {

Authorization: "Basic " + tokenCredential,

"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"

},

method: "post",

payload: "grant_type=client_credentials"

};

var responseToken = UrlFetchApp.fetch(tokenUrl, tokenOptions);

var parsedToken = JSON.parse(responseToken);

var token = parsedToken.access_token;

Logger.log("token : " +token);

Anwendungsentwicklung mit Google Apps Script51 01.04.2016

URL des Services

Token Werte Setzen

URLFetchApp

lädt http ressourcen

JSON Parsen

Json.parse

Page 52: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Daten von externen Diensten lesen (3) – Api Nutzen

Im Beispiel werden die letzten Tweets eines Accounts geladen

// Read twitter TimeLine of User ApartmentBaden

var apiUrl = "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=ApartmentBaden";

var apiOptions = { headers : { Authorization: 'Bearer ' + token }, "method" : "get„ };

var responseApi = UrlFetchApp.fetch(apiUrl, apiOptions);

var result = "";

if (responseApi.getResponseCode() == 200) {

// Parse the JSON encoded Twitter API response

var tweets = JSON.parse(responseApi.getContentText());

if (tweets) {

for (var i = 0; i < tweets.length; i++) {

var tweet = tweets[i].text;

var date = new Date(tweets[i].created_at);

result += "[" + date.toUTCString() + "]" + tweet + " \n\n ";

}

}

}

Logger.log(result); <- zeigt jeweils pro Tweet das Datum und den Tweet-Text im LogOutput an

Anwendungsentwicklung mit Google App Scripts52 01.04.2016

Page 53: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Regelmäßige Tasks registrieren

Eine Methode, die regelmässig ausgeführt werden kann, wird über den

Taskmanager registriert.

Ressources -> Current Project‘s Triggers

Im folgenden wird die Methode „readTweets()“ zur stündlichen Ausführung

registriert.

Anwendungsentwicklung mit Google Apps Script53 01.04.2016

Page 54: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Google Sites : Komponenten einfügen

Freigegeben Komponenten und Web Apps können in Google Sites

eingebunden werden.

Erstelle eine neue Seite in Google Sites

https://www.google.com/sites/overview.html

Einbinden von Sheets

Einfügen -> Drive -> Tabelle

Wähle das zuvor publizierte

Sheet aus

Anwendungsentwicklung mit Google Apps Script54 01.04.2016

Page 55: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Google Sites : Komponenten einfügen (2)

Einbinden von Webapps

Einfügen -> Apps Script

Web App muss zuvor publiziert worden sein

Entsprechende Art der eingebundene Komponente wird von Google Sites

angezeigt, Größe kann angepasst werden

Anwendungsentwicklung mit Google Apps Script55 01.04.2016

Page 56: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Zusammenfassung

Google Apps Script erlaubt die umfangreiche Automatisierung zwischen

bestehenden Cloudanwendungen von Google wie Mail, Sheets und Drive.

Zur Erstellung der Anwendungen müssen keine weiteren Dienste,

Entwicklungsumgebungen oder Systeme erstellt werden. Die vollständige

Entwicklung ist web / cloudbasiert. Die gesamte Implementierung

geschieht mittels JAVAScript.

Weiterhin ist es möglich, umfangreiche Webanwendungen zu erstellen,

welche auf der leistungsfähigen Serverumgebung von Google laufen.

Auch hierzu müssen keine weiteren Komponenten wie Webserver,

Datenbanken oder Applikationserver installiert werden.

Da man auf externe Dienste zugreifen kann, hat man weitreichende

Erweiterungsmöglichkeiten, die über das Leistungsangebot von Google

hinausgehen.

Anwendungsentwicklung mit Google Apps Script56 01.04.2016

Page 57: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

AUFGABEN FÜR PRAKTIKUM

Google Apps Script

Anwendungsentwicklung mit Google Apps Script57 01.04.2016

Page 58: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Praktikum: Anwendung von Google Apps Script

Ziel des Praktikums ist es, die grundlegenden Möglichkeiten von Google

Apps Script zu lernen und zu beherrschen.

Exemplarisch soll daher eine Google Site erstellt werden, welche ein Set

von zu erstellenden Komponenten anzeigt und dabei auf Google Dienste

wie auch externe Dienste zurückgreift.

Die entsprechenden Komponenten sind zu implementieren innerhalb

eines eigenen Google Accounts. Ergebnis der Praktikumsarbeit soll die

URL der Google Site sein, welche alle Komponenten integriert. Diese ist

an Dozent nach Fertigstellung zu übermitteln.

Anwendungsentwicklung mit Google Apps Script58 01.04.2016

Page 59: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Aufgabe 1: Accounts erstellen

Falls noch nicht vorhanden, erstellen Sie bitte einen Google Account.

https://myaccount.google.com/

Im Email Eingang sollten mindestens 10 Emails in der Inbox sein.

https://mail.google.com

Unter YouTube sollten mindestens 10 Filme gestartet worden sein

https://www.youtube.com/feed/history

Erstellen Sie bitte einen kostenlosen Account bei

http://openweathermap.org/api . Notieren Sie bitte den Api Key

Erstellen Sie eine Seite unter Google Sites. Merken Sie sich bitte die URL

http://sites.google.com/

Anwendungsentwicklung mit Google Apps Script59 01.04.2016

Page 60: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Aufgabe 2: Datenhaltung einrichten

Datenhaltung

Erstellen Sie bitte in Google Drive einen neuen Ordner „Praktikum“.

Erstellen Sie ein neues Sheet „PraktikumSheet“.

Notieren Sie sich die ID des Sheets

Erstellen Sie bitte weitere Sheets mit jeweils einer Tabellen gleichen

Namens

- Sheet Emails: Spalten SenderEmail, Subject, Datum

- Sheet EmailStatistik: Zellen EmailsTotal, EmailsGestern,

VerschiedeneAbsender

- Sheet YouTube: Spalten FilmTitel, Datum

- Sheet Wetterdaten: Zellen Temperatur, Sonnenaufgang,

Sonnenuntergang, Datum, Windstärke, Windrichtung

Anwendungsentwicklung mit Google Apps Script60 01.04.2016

Page 61: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Aufgabe 2: Abbildung der Tabellen

Anwendungsentwicklung mit Google Apps Script61 01.04.2016

Page 62: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Aufgabe 3: Komponenten in Google Sites einbinden

Publizieren Sie die vier

Blätter der Sheets.

Binden Sie diese in

Google Sites ein

Anwendungsentwicklung mit Google Apps Script62 01.04.2016

Page 63: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Aufgabe 4: Entwicklungsumgebung einrichten

Erstellen Sie im Sheet Praktikum ein neues Google Apps Projekt. Das

Projekt soll den Namen „Dashboard“ bekommen.

Erstellen Sie im Projekt „Dashboard“ die folgenden Skriptdateien

- emails.gs

- emailsStatistik.gs

- youtube.gs

- wetterdaten.gs

- jsonweb.gs

Anwendungsentwicklung mit Google Apps Script63 01.04.2016

Page 64: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Aufgabe 5: Auslesen von Emails

Innerhalb dieser Aufgabe wird die Bibliothek GmailApp verwendet.

Verwenden Sie das Sheet emails.gs. Erstellen Sie eine Funktion

readEmails, welche die Emails der Gmail Inbox lesen kann. Es sollen

jeweils die maximal 30 neuesten Emails geladen werden.

Für jede Email soll geprüft werden, ob diese bereits in der Tabelle

„Emails“ als Eintrag gespeichert ist. Key dabei ist Absender|Betreff.

Falls Eintrag noch nicht vorhanden ist, soll eine neue Zeile in Tabelle

„Emails“ eingetragen werden, welche als Spalten die AbsenderEmail,

Betreff und das Eingangsdatum erhalten.

Die Funktion readEmails soll alle 60 Minuten automatisch über den

Taskmanager ausgeführt werden.

Anwendungsentwicklung mit Google Apps Script64 01.04.2016

Page 65: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Aufgabe 6: Erstellen von Email Statistiken

Innerhalb dieser Aufgabe werden Statistiken zu den erhaltenen Emails

erstellt.

Verwenden Sie das File emailStatistics.gs. Erstellen Sie eine Funktion

createEmaiStatistics(), welche aus der Tabelle Emails die erhaltenen

Emails liest. Folgende Statistikwerte sollen ermittelt werden

- Emails Total: die Anzahl der insgesamt erhaltenen Emails

- Emails Gestern: die Anzahl der Emails, die am gestrigen Tag erhalten

wurden

- Verschiedene Absender: die Anzahl der bezüglich Ihrer Absenderemail

verschiedenen Sender

Die erhaltenen Werte sind in die entsprechenden Felder der Tabelle

EmailStatistics zu schreiben

Registrieren Sie die Funktion createEmailStatistics() als Task, der Nachts

zwischen 0 und 1 Uhr läuft

Anwendungsentwicklung mit Google Apps Script65 01.04.2016

Page 66: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Aufgabe 7: Reagieren auf Events

Innerhalb dieser Aufgabe wird auf ein Event reagiert. Der Event ist eine

eingegehende Email mit dem Betreff „EmailStatistic“.

Erstellen Sie eine Funktion readStatisticMailRequest() im File emailStatistics.gs,

welche nach Emails im Posteingang sucht, die den Betreff „EmailStatistic“ haben.

Wird eine solche Mail gefunden, soll die Funktion wie folgt handeln:

- Lese die Werte EmailsTotal, EmailsGestern und VerschiedeneAbsender aus

dem Sheet EmailStatistics

- Sende dem Sender der Email eine Antwort-Email mit dem Inhalt

„EmailsTotal: <EmailsTotal>, Emails Gestern: <EmailsGestern>, Verschiedene

Absender: <VerschiedeneAbsender>.

- Lösche die empfange Email aus der InBox (da sonst der Dienst immer aktiviert

wird!).

- Die Funktion readStatisticMailRequest() soll alle 10 Minuten vom Taskmanager

gestartet werden.

Anwendungsentwicklung mit Google Apps Script66 01.04.2016

Page 67: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Aufgabe 8: Verbindung zu Google Services

Ziel dieser Aufgabe ist das Abfragen von Daten aus Google Diensten.

Ermitteln Sie die Bibliothek, die zur Abfrage von Daten aus YouTube

geeignet ist und binden diese ein.

Erstellen Sie eine Funktion readLatestMovies(), welche die in YouTube

zuletzt gesehenen Videos abruft. Jedes Video, welches noch nicht im

Sheet YouTube gespeichert ist, soll eingetragen werden als „Filmtitel“ und

„Datum gesehen“.

Die Funktion readLatestMovies() soll stündlich vom Taskmanager

gestartet werden.

Anwendungsentwicklung mit Google Apps Script67 01.04.2016

Page 68: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Aufgabe 9: Verbindung zu externen Diensten

Ziel dieser Aufgabe ist das Abfragen von Daten aus externen Diensten.

Hierbei werden OAuth Methoden verwendet.

Lesen Sie die API von http://openweathermap.org/api. Ermitteln Sie, wie

ein JSON Request generiert wird, um das Wetter für Pforzheim

anzuzeigen.

Aus der API sind die Werte Temperatur, Sonnenaufgang,

Sonnenuntergang, Datum (aktueller Tag), Windstärke, Windrichtung

auszulesen. Die erhaltenen Werte sollen im Sheet Wetterdaten ersetzen.

Erstellen sie im File wetterdaten.gs eine entsprechende Funktion

readWeather(). Diese Methode soll einmal täglich zwischen 8 und 9 Uhr

ausgeführt werden.

Anwendungsentwicklung mit Google Apps Script68 01.04.2016

Page 69: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Aufgabe 10: JSON basierte Webanwendung

Ziel dieser Aufgabe ist die Erstellung einer JSON basierten

Webanwendung. Sie soll auf Anfrage Daten mit JSON serialisiert an den

Client zurück geben. Somit können externe Anwendungen von den Daten

in der Anwendung profitieren.

Erstellen Sie eine Webanwendung mit GET Request Unterstützung in der

Datei jsonweb.gs.

Auf einen GET Request soll der Client als JSON Request folgendes

Objekt erhalten

Wetterdaten

city: Pforzheim

temperatur: <temperatur> .

Der Wert für Temperatur ist aus Sheet Wetterdaten auszulesen.

Binden Sie diese Webanwendung in die Google Sites Anwendung ein.

Anwendungsentwicklung mit Google Apps Script69 01.04.2016

Page 70: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Aufgabe 11: Apache Wicket Tutorial

Mit Google Apps Script wurde der komplett cloudbasierte Weg gezeigt,

um Anwendungen innerhalb einer Cloudinfrastruktur zu installieren.

Den „traditionellen“ Weg zeigt die Vorlesung nächste Woche „Wicket

Tutorial“. Hierbei wird eine Bildsuchmaschine mit Hilfe des

Webframeworks Apache Wicket erstellt. Als Datenhaltung wird mittels

MySQL eine SQL basierte Datenbank verwendet.

Innerhalb dieser Aufgabe sollen Sie die im Tutorial gezeigte, komplett

lauffähige Anwendung auf Ihrem Rechner (oder auf von Uni gestellter

Ressource) installieren und ausführen.

Anwendungsentwicklung mit Google Apps Script70 01.04.2016

Page 71: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Punkteverteilung

Aufgabe Punkte

01. Accounts erstellen 1

02. Datenhaltung einrichten 2

03. Komponenten in Google Sites einbinden 3

04. Entwicklungsumgebung einrichten 2

05. Auslesen von Emails 3

06. Erstellen von Email Statistiken 4

07. Reagieren auf Events 3

08. Verbindung zu Google Services 6

09. Verbindung zu externen Diensten 5

10. JSON basierte Webanwendung 6

11. Apache Wicket Tutorial 5

Total maximal 40

Anwendungsentwicklung mit Google Apps Script71 01.04.2016

Page 72: Application development using Google Apps Script

Advanced Software Engineering

Hochschule Pforzheim - Sommersemester 2016

Kontakt

Ich stehe Ihnen gerne bei Fragen zu den einzelnen Aufgaben zur

Verfügung.

Andreas Walter

Email: [email protected]

Anwendungsentwicklung mit Google Apps Script72 01.04.2016