SlideShare a Scribd company logo
1 of 61
This work is licensed under a
Creative Commons
Attribution 4.0 Unported
License. CC-BY mhawksey
Google Apps Script:
+Martin Hawksey
@mhawksey
The authentic{ated} playground
http://go.alt.ac.uk/GDGBerlin-AppsScript
CC-BY-NC-ND lukexmartin
CC-BY-NC Xtream_i
https://flic.kr/p/tYTwd
Google Apps Script
CC-BY Google – Google Apps Script, 13-03-2012
JavaScript in the cloud
Apps Script is based on JavaScript 1.6,
plus a few features from 1.7 and 1.8.
A brief history
2009
Scripts in Sheets
Custom functions
2010
UiApp*
Web Apps (run as
developer)
Script Gallery*
2011
Scripts in Sites
GUI Builder*
More services
2012
Standalone scripts
HTMLSerivce
ScriptDb*
Web Apps (run as user)
Libraries and versioning
Content Service
Chrome Web Store
2013
Scripts in Doc
Scripts in Forms
Auth flow
More services
2014
Add-on for Documents,
Sheets and Forms
IFRAME for HTMLService
* Denotes deprecated services/features
Adapted from Wesley Chun’s Google Apps Script
2015
Execution API
2016
???
Where..
StandaloneSheets DocsForms Sites
Integration
CC-BY-NC Eugen Stoll
https://flic.kr/p/5c6ce
One liners
One liners
One liners
One liners{ish}
Toast
Custom UI
CC-BY Google Inc. Apps Script Menus
Auth
One liners services
Calendar
Contacts
Document
Drive
Forms
Gmail
Groups
Language
Maps
Sites
Spreadsheet
One{ish} liners services
AdSense
Analytics
Apps Activity
BigQuery
Calendar
Classroom
Drive
DoubleClick Campaigns
Fusion Tables
Gmail
Google+
Google+ Domains
Mirror
Prediction
Shopping Content
Tasks
URL Shortener
YouTube
Advanced Services
…fetch
BY-NC-SA tarteme
https://flic.kr/p/bAoEyi
“
…fetch
UrlFetchApp.fetch(url, params);
This service allows scripts to access other resources on the
web by fetching URLs. A script can use the UrlFetch service
to issue HTTP and HTTPS requests and receive responses.
The UrlFetch service uses Google's network infrastructure
for efficiency and scaling purposes.
Comparing
CiviEvent
registrations for
annual events and
automatically
reporting on a daily
basis
Problem
CiviReport
“
Scheduled Jobs - Mail Reports (mail_report)
26
Triggers
Trigger
// set the script to read the email run 15min later
ScriptApp.newTrigger("processInbox")
.timeBased()
.after(15 * 60 * 1000)
.create();
Hello Libraries
Libraries
https://plus.google.com/+SpencerEastonCCS/posts/hrQ9eaHMUW6
Identity
CC-BY-NC Thomas Hawk
https://flic.kr/p/bUy6wK
Google Apps Script Web apps
HtmlService: Templating
function doGet() {
return HtmlService
.createTemplateFromFile('Index')
.evaluate()
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
CODE.GS
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
Hello, World! The time is <?= new Date() ?>.
</body>
</html>
INDEX.HTML
< CC-BY Google >
HtmlService: Communicate with Server
function doGet() {
return HtmlService.createHtmlOutputFromFile('Index')
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
function doSomething() {
Logger.log('I was called!');
}
CODE.GS
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script>
google.script.run.doSomething();
</script>
</head>
</html>
INDEX.HTML
< CC-BY Google >
HtmlService
HtmlService
ContentService
function doGet() {
return ContentService.createTextOutput('Hello, world!');
}
function doGet(request) {
var events = CalendarApp.getEvents(
new Date(Number(request.parameters.start) * 1000),
new Date(Number(request.parameters.end) * 1000));
var result = {
available: events.length == 0
};
return ContentService.createTextOutput(
request.parameters.prefix + '(' + JSON.stringify(result) + ')')
.setMimeType(ContentService.MimeType.JAVASCRIPT);
}
JSONP
TXT
< CC-BY Google >
“
ContentService
ContentService supports returning
TEXT, ATOM, CSV, iCal, JavaScript,
JSON, RSS, vCard, and XML
“
Execution API
The Apps Script Execution API is a REST
interface that lets a third-party application call
a function defined in an Apps Script project and
receive a response. This API lets you expose
the full utility of Apps Script to any application,
including Android and iOS apps.
...can be used with Google APIs Client Libraries
“
Properties Service
store simple data in key-value pairs scoped to
one script, one user of a script, or one
document
getScriptProperties()
getUserProperties()
getDocumentProperties()
Let's play…
CC-BY-NC-ND Elke Noda
https://flic.kr/p/58zapN
https://tags.hawksey.info/
TAGS Summary
TAGSExplorer
TwtrService
[my link]
Advanced Services
Google Analytics
Google Analytics
[demo link]
Google Analytics
Twitter referral mashed with Google Analytics
Translation
Maps
Google Add-ons
CC-BY gail heidel
https://flic.kr/p/65aFCx
Add-ons in action
Domain distribution
Community
Danke!
+MartinHawksey
@mhawksey
EdTech Explorer
mashe.hawksey.info
http://go.alt.ac.uk/GDGBerlin-AppsScript

More Related Content

What's hot

Introduction to App Engine Development
Introduction to App Engine DevelopmentIntroduction to App Engine Development
Introduction to App Engine Development
Ron Reiter
 

What's hot (11)

Firebase for the Web
Firebase for the WebFirebase for the Web
Firebase for the Web
 
Firebase Adventures - Going above and beyond in Realtime
Firebase Adventures - Going above and beyond in RealtimeFirebase Adventures - Going above and beyond in Realtime
Firebase Adventures - Going above and beyond in Realtime
 
Google App Engine with Gaelyk
Google App Engine with GaelykGoogle App Engine with Gaelyk
Google App Engine with Gaelyk
 
Grails Plugins(Console, DB Migration, Asset Pipeline and Remote pagination)
Grails Plugins(Console, DB Migration, Asset Pipeline and Remote pagination)Grails Plugins(Console, DB Migration, Asset Pipeline and Remote pagination)
Grails Plugins(Console, DB Migration, Asset Pipeline and Remote pagination)
 
Creating Real-Time Data Mashups with Node.JS and Adobe CQ
Creating Real-Time Data Mashups with Node.JS and Adobe CQCreating Real-Time Data Mashups with Node.JS and Adobe CQ
Creating Real-Time Data Mashups with Node.JS and Adobe CQ
 
Dynamic Components using Single-Page-Application Concepts in AEM/CQ
Dynamic Components using Single-Page-Application Concepts in AEM/CQDynamic Components using Single-Page-Application Concepts in AEM/CQ
Dynamic Components using Single-Page-Application Concepts in AEM/CQ
 
GitHub and Office 365 video Munich
GitHub and Office 365 video MunichGitHub and Office 365 video Munich
GitHub and Office 365 video Munich
 
Introducing Firebase by Google
Introducing Firebase by GoogleIntroducing Firebase by Google
Introducing Firebase by Google
 
Scheduled Jobs in Azure
Scheduled Jobs in AzureScheduled Jobs in Azure
Scheduled Jobs in Azure
 
Introduction to App Engine Development
Introduction to App Engine DevelopmentIntroduction to App Engine Development
Introduction to App Engine Development
 
Introduction to Facebook JavaScript & Python SDK
Introduction to Facebook JavaScript & Python SDKIntroduction to Facebook JavaScript & Python SDK
Introduction to Facebook JavaScript & Python SDK
 

Similar to Google Apps Script: The authentic{ated} playground [2015 Ed.]

App engine devfest_mexico_10
App engine devfest_mexico_10App engine devfest_mexico_10
App engine devfest_mexico_10
Chris Schalk
 
Speak the Web 15.02.2010
Speak the Web 15.02.2010Speak the Web 15.02.2010
Speak the Web 15.02.2010
Patrick Lauke
 

Similar to Google Apps Script: The authentic{ated} playground [2015 Ed.] (20)

The Big Picture and How to Get Started
The Big Picture and How to Get StartedThe Big Picture and How to Get Started
The Big Picture and How to Get Started
 
Html5 & less css
Html5 & less cssHtml5 & less css
Html5 & less css
 
A Tour of Google Cloud Platform
A Tour of Google Cloud PlatformA Tour of Google Cloud Platform
A Tour of Google Cloud Platform
 
2012 - HTML5, CSS3 and jQuery with SharePoint 2010
2012 - HTML5, CSS3 and jQuery with SharePoint 20102012 - HTML5, CSS3 and jQuery with SharePoint 2010
2012 - HTML5, CSS3 and jQuery with SharePoint 2010
 
HTML5 WebWorks
HTML5 WebWorksHTML5 WebWorks
HTML5 WebWorks
 
Developing Java Web Applications In Google App Engine
Developing Java Web Applications In Google App EngineDeveloping Java Web Applications In Google App Engine
Developing Java Web Applications In Google App Engine
 
Accessing Google Cloud APIs
Accessing Google Cloud APIsAccessing Google Cloud APIs
Accessing Google Cloud APIs
 
Html5
Html5Html5
Html5
 
Google Apps Script: Accessing G Suite & other Google services with JavaScript
Google Apps Script: Accessing G Suite & other Google services with JavaScriptGoogle Apps Script: Accessing G Suite & other Google services with JavaScript
Google Apps Script: Accessing G Suite & other Google services with JavaScript
 
HTML5 introduction for beginners
HTML5 introduction for beginnersHTML5 introduction for beginners
HTML5 introduction for beginners
 
Build an AI/ML-driven image archive processing workflow: Image archive, analy...
Build an AI/ML-driven image archive processing workflow: Image archive, analy...Build an AI/ML-driven image archive processing workflow: Image archive, analy...
Build an AI/ML-driven image archive processing workflow: Image archive, analy...
 
Exploring Google (Cloud) APIs & Cloud Computing overview
Exploring Google (Cloud) APIs & Cloud Computing overviewExploring Google (Cloud) APIs & Cloud Computing overview
Exploring Google (Cloud) APIs & Cloud Computing overview
 
Exploring Google APIs with Python
Exploring Google APIs with PythonExploring Google APIs with Python
Exploring Google APIs with Python
 
App engine devfest_mexico_10
App engine devfest_mexico_10App engine devfest_mexico_10
App engine devfest_mexico_10
 
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developers
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developersChris O'Brien - Best bits of Azure for Office 365/SharePoint developers
Chris O'Brien - Best bits of Azure for Office 365/SharePoint developers
 
Developing Next-Gen Enterprise Web Application
Developing Next-Gen Enterprise Web ApplicationDeveloping Next-Gen Enterprise Web Application
Developing Next-Gen Enterprise Web Application
 
WebGUI Developers Workshop
WebGUI Developers WorkshopWebGUI Developers Workshop
WebGUI Developers Workshop
 
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考えるIt is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
It is not HTML5. but ... / HTML5ではないサイトからHTML5を考える
 
Speak the Web 15.02.2010
Speak the Web 15.02.2010Speak the Web 15.02.2010
Speak the Web 15.02.2010
 
Google's serverless journey: past to present
Google's serverless journey: past to presentGoogle's serverless journey: past to present
Google's serverless journey: past to present
 

More from Martin Hawksey

Twitter in Education: Interactively exploring the conversation with TAGS and ...
Twitter in Education: Interactively exploring the conversation with TAGS and ...Twitter in Education: Interactively exploring the conversation with TAGS and ...
Twitter in Education: Interactively exploring the conversation with TAGS and ...
Martin Hawksey
 
TEL Quality and Innovation: What can be learned from the history of computer ...
TEL Quality and Innovation: What can be learned from the history of computer ...TEL Quality and Innovation: What can be learned from the history of computer ...
TEL Quality and Innovation: What can be learned from the history of computer ...
Martin Hawksey
 
Making the complex less complicated: An introduction to social network analysis
Making the complex less complicated: An introduction to social network analysisMaking the complex less complicated: An introduction to social network analysis
Making the complex less complicated: An introduction to social network analysis
Martin Hawksey
 

More from Martin Hawksey (20)

What about GDPR?
What about GDPR?What about GDPR?
What about GDPR?
 
Twitter in Education: Interactively exploring the conversation with TAGS and ...
Twitter in Education: Interactively exploring the conversation with TAGS and ...Twitter in Education: Interactively exploring the conversation with TAGS and ...
Twitter in Education: Interactively exploring the conversation with TAGS and ...
 
TEL Quality and Innovation: What can be learned from the history of computer ...
TEL Quality and Innovation: What can be learned from the history of computer ...TEL Quality and Innovation: What can be learned from the history of computer ...
TEL Quality and Innovation: What can be learned from the history of computer ...
 
Making the complex less complicated: An introduction to social network analysis
Making the complex less complicated: An introduction to social network analysisMaking the complex less complicated: An introduction to social network analysis
Making the complex less complicated: An introduction to social network analysis
 
Measuring Social Media Impact: Google Analytics and Twitter
Measuring Social Media Impact: Google Analytics and TwitterMeasuring Social Media Impact: Google Analytics and Twitter
Measuring Social Media Impact: Google Analytics and Twitter
 
Using CiviCRM in Google Drive with the new CiviService Google Script Library
Using CiviCRM in Google Drive with the new CiviService Google Script LibraryUsing CiviCRM in Google Drive with the new CiviService Google Script Library
Using CiviCRM in Google Drive with the new CiviService Google Script Library
 
Google Analytics Workout (#IWMW16)
Google Analytics Workout (#IWMW16)Google Analytics Workout (#IWMW16)
Google Analytics Workout (#IWMW16)
 
Extracting and analyzing discussion data with google sheets and google analytics
Extracting and analyzing discussion data with google sheets and google analyticsExtracting and analyzing discussion data with google sheets and google analytics
Extracting and analyzing discussion data with google sheets and google analytics
 
Using WordPress as a badge platform #openbadgesHE
Using WordPress as a badge platform #openbadgesHEUsing WordPress as a badge platform #openbadgesHE
Using WordPress as a badge platform #openbadgesHE
 
Looking at creativity and culture in computer science to inspire better educa...
Looking at creativity and culture in computer science to inspire better educa...Looking at creativity and culture in computer science to inspire better educa...
Looking at creativity and culture in computer science to inspire better educa...
 
Creating personal tutoring environments with Google Apps Script
Creating personal tutoring environments with Google Apps ScriptCreating personal tutoring environments with Google Apps Script
Creating personal tutoring environments with Google Apps Script
 
Learning analytics gaining good actionable insight
Learning analytics   gaining good actionable insightLearning analytics   gaining good actionable insight
Learning analytics gaining good actionable insight
 
Learning analytics: Threats and opportunities
Learning analytics: Threats and opportunitiesLearning analytics: Threats and opportunities
Learning analytics: Threats and opportunities
 
Breaking the Cell #WebExpo
Breaking the Cell #WebExpo  Breaking the Cell #WebExpo
Breaking the Cell #WebExpo
 
Open Badges in Open Education – Do They Count? #eas14
Open Badges in Open Education – Do They Count? #eas14Open Badges in Open Education – Do They Count? #eas14
Open Badges in Open Education – Do They Count? #eas14
 
ocTEL and Open Badges #altc
ocTEL and Open Badges #altcocTEL and Open Badges #altc
ocTEL and Open Badges #altc
 
IWMW14: Hyper-connectED (ocTEL, Open Badges and the Personal Knowledge Graph)
IWMW14: Hyper-connectED (ocTEL, Open Badges and the Personal Knowledge Graph)IWMW14: Hyper-connectED (ocTEL, Open Badges and the Personal Knowledge Graph)
IWMW14: Hyper-connectED (ocTEL, Open Badges and the Personal Knowledge Graph)
 
Google {Learning} Analytics GEUG14
Google {Learning} Analytics GEUG14 Google {Learning} Analytics GEUG14
Google {Learning} Analytics GEUG14
 
Customising Google Apps for Education with Google Apps Script GEUG14
Customising Google Apps for Education with Google Apps Script GEUG14Customising Google Apps for Education with Google Apps Script GEUG14
Customising Google Apps for Education with Google Apps Script GEUG14
 
Detecting and Analyzing Subpopulations within Connectivist MOOCs: Initial work
Detecting and Analyzing Subpopulations within Connectivist MOOCs: Initial workDetecting and Analyzing Subpopulations within Connectivist MOOCs: Initial work
Detecting and Analyzing Subpopulations within Connectivist MOOCs: Initial work
 

Recently uploaded

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 

Google Apps Script: The authentic{ated} playground [2015 Ed.]