2. Sobre mim
Sérgio Souza Costa
Professor - UFMA
Doutor em Computação Aplicada (INPE)
prof.sergio.costa@gmail.com
https://sites.google.com/site/profsergiocosta/home
http://www.slideshare.net/skosta/presentations?order=popular
https://twitter.com/profsergiocosta
http://gplus.to/sergiosouzacosta
3. Google Apps Script
Link para a primeira parte;
http://www.slideshare.net/skosta/google-apps-script-parte-1
4. Criando aplicação web
Ui Service
HTML Service
Like GWT (not all items)
Like HTML5 (not all benefits)
Some elements have been
deprecated (hyperlink,..)
HTML through compiler Caja
(HTML is limited :(
Fast to develop, difficult to maintain
Only jQuery as ext library
IMHO: It’s the past
IMHO: It’s the future!
7. Criando aplicação web
Copie o código
abaixo no editor.
function doGet() {
var output = HtmlService.createHtmlOutput('');
output.append("<h1>JINF13 - Google Apps Script</h1>")
output.append("<p> Ola Mundo </p>")
return output;
}
13. Gerenciando modificações
Após a implantação da primeira versão, o google
disponibiliza uma URL para a versão em
desenvolvimento. Para entender como funciona, edite
o código anterior adicionando o seu nome, como
abaixo:
function doGet() {
var output = HtmlService.createHtmlOutput('');
output.append("<h1>JINF13 - Google Apps Script</h1>")
output.append("<h2>Sérgio Souza Costa</h2>")
output.append("<p> Ola Mundo </p>")
return output;
}
27. Em arquivos separados
function doGet() {
return HtmlService.createHtmlOutputFromFile('index').
setSandboxMode(HtmlService.SandboxMode.NATIVE);
}
28. Em arquivos separados
function doGet() {
return HtmlService.createHtmlOutputFromFile('index').
setSandboxMode(HtmlService.SandboxMode.NATIVE);
}
29. Em arquivos separados
Acesse o projeto
neste link
https://script.google.com/d/16zsXAUUmQYCGyYIhDbMmr_CzrrAc9quNujMnFaGBPlJoh87K3eFRHbF/edit?usp=sharing
function doGet() {
return HtmlService.createHtmlOutputFromFile('index').
setSandboxMode(HtmlService.SandboxMode.NATIVE);
}
30. Em arquivos separados
Usando JavaScript e JQuery
<div id="g1">
Google Apps Script
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" >
$(
function(){
$("#g1").animate({ "fontSize": "400%" }, 1000);
}
)
</script>
function doGet() {
return HtmlService.createHtmlOutputFromFile('index2').
setSandboxMode(HtmlService.SandboxMode.NATIVE);
}
31. Em arquivos separados
Usando JavaScript e JQuery
<div id="g1">
Google Apps Script
</div>
No link abaixo tenho disponível
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
uma aula detalhada sobre JQuery:
<script type="text/javascript" >
$(
http://www.slideshare.
function(){
net/skosta/cliente-side$("#g1").animate({ "fontSize": "400%" }, javascriptpptx
1000);
}
)
</script>
function doGet() {
return HtmlService.createHtmlOutputFromFile('index2').
setSandboxMode(HtmlService.SandboxMode.NATIVE);
}
33. Mostrando dados de uma planilha
Considere uma planilha com nomes e três notas de
cada aluno, como no link a seguir:
https://docs.google.com/spreadsheet/ccc?
key=0Avv93GPSzr6FdDRiNWlCREZnLVkzQ1VnTmpJaDJJU2c&usp=
sharing
Este é o id da planilha
0Avv93GPSzr6FdDRiNWlCREZnLVkzQ1VnTmpJaDJJU2c
Id (ou
key)
34. Mostrando dados de uma planilha
Crie um novo projeto em branco, depois copie e
cole o código abaixo:
function doGet() {
var output = HtmlService.createHtmlOutput('');
output.append("<h1>Notas Alunos</h1>")
var sheet = SpreadsheetApp.openById(
"0Avv93GPSzr6FdDRiNWlCREZnLVkzQ1VnTmpJaDJJU2c")
var data = sheet.getDataRange().getValues()
output.append("<table>")
for (var i in data) {
output.append("<tr>")
for (var j in data[i]) {
output.append("<td>").append(data[i][j]).append("</td>")
}
output.append("</tr>")
}
output.append("<table>")
return output;
}
O id da
planilha
anterior,
alunos e
notas.
35. Mostrando dados de uma planilha
Como o aplicativo esta acessando uma planilha,
é necessário autorizá-lo antes de publicar:
Click em
executar,
36. Mostrando dados de uma planilha
Como o aplicativo esta acessando uma planilha,
é necessário autorizá-lo antes de publicar:
Depois em
continuar
37. Mostrando dados de uma planilha
Como o aplicativo esta acessando uma planilha,
é necessário autorizá-lo antes de publicar:
Depois em
aceitar.
38. Mostrando dados de uma planilha
Depois de implantado, podera ser acessado em
um navegador como abaixo:
39. Mostrando dados de uma planilha
index.html
Versão usando Scriptlets
Codigo.gs
function doGet() {
return HtmlService
.createTemplateFromFile('index')
.evaluate();
}
function getData() {
return SpreadsheetApp.openById(
'0Avv93GPSzr6FdDhGR3ZqbHpDTHJCMXotQUFWcEstcGc').
getDataRange().getValues();
}
<? var data = getData(); ?>
<table>
<? for (var i = 0; i < data.length; i++) { ?>
<tr>
<? for (var j = 0; j < data[i].length; j++) { ?>
<td><?= data[i][j] ?></td>
<? } ?>
</tr>
<? } ?>
</table>
40. Mostrando dados de uma planilha
para uma página no google sites
function atualizaPagina () {
var output = HtmlService.createHtmlOutput('');
output.append("<h1>Notas Alunos</h1>")
var sheet = SpreadsheetApp.getActiveSpreadsheet()
var data = sheet.getDataRange().getValues()
output.append("<table>")
for (var i in data) {
output.append("<tr>")
for (var j in data[i]) {
output.append("<td>").append(data[i][j]).append("</td>")
}
output.append("</tr>")
}
output.append("<table>")
var page SitesApp.getPageByUrl('URLDAPAGINA”');
page.setHtmlContent (output.getContent())
}
Esta função pode
ser criada em um
script da planilha.
41. Mostrando dados de uma planilha
para uma página no google sites
Crie uma cópia da planilha com as notas dos
alunos:
42. Mostrando dados de uma planilha
para uma página no google sites
Para manter a página atualizada, crie um acionador
(trigger) que será executado a cada hora.
43. Mostrando dados de uma planilha
para uma página no google sites
Para manter a página atualizada, crie um acionador
(trigger) que será executado a cada hora.
44. UI service
Os scripts podem usar um grande número de elementos de interfaces (widgets):
●
Push buttons
●
Radio buttons
●
Toggle buttons
●
Check boxes
●
Text fields
●
Labels
●
Titles
●
List boxes
●
Dialog boxes
●
Panels of many types
49. Acessando serviços externos
Carregando vídeos do youtube, a partir dos dados do
XML.
var xml = UrlFetchApp.fetch(youtubeURL).getContentText();
var document = XmlService.parse(xml);
http://sergioscosta.blogspot.
com.
br/2013/09/incorporandovideos-do-youtube-no.html
50. Acessando serviços externos com
autenticação
Acesse https://dev.twitter.com/ e crie um novo
aplicativo:
https://script.google.com/macros
52. Acessando serviços externos com
autenticação
var consumerKey = 'XXXXX'; // Register your app with Twitter.
var consumerSecret = 'XXXXX'; // Register your app with Twitter.
var oauthConfig = UrlFetchApp.addOAuthService('twitter');
oauthConfig.setAccessTokenUrl(
'http://api.twitter.com/oauth/access_token');
https://developers.google.com/appsoauthConfig.setRequestTokenUrl(
script/guides/services/external
'http://api.twitter.com/oauth/request_token');
oauthConfig.setAuthorizationUrl(
'http://api.twitter.com/oauth/authorize');
oauthConfig.setConsumerKey(consumerKey);
oauthConfig.setConsumerSecret(consumerSecret);
var options = {
'oAuthServiceName' : 'twitter', 'oAuthUseToken' : 'always'
};
var url = 'http://api.twitter.com/1.1/statuses/user_timeline.json';
var response = UrlFetchApp.fetch(url, options);
var tweets = JSON.parse(response.getContentText());
53. Acessando serviços externos com
autenticação (twitter)
https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline
54. Acessando serviços externos com
autenticação (twitter)
var result = UrlFetchApp.fetch("https://api.twitter.com/1.1/statuses/user_timeline.
json?screen_name=profsergiocosta&count=5", options);
var o = Utilities.jsonParse(result.getContentText());
var output = HtmlService.createHtmlOutput('');
output.append("<h1>Oficina - GAS</h1>")
var index = 0;
for (var i in o) {
var post = o[i];
output.append("<p>").append(post.text).append ("</p>")
}
return output;
55. Acessando serviços externos com
autenticação (twitter)
var result = UrlFetchApp.fetch("https://api.twitter.com/1.1/statuses/user_timeline.
json?screen_name=profsergiocosta&count=5", options);
var o = Utilities.jsonParse(result.getContentText());
var output = HtmlService.createHtmlOutput('');
output.append("<h1>Oficina - GAS</h1>")
var index = 0;
for (var i in o) {
var post = o[i];
output.append("<p>").append(post.text).append ("</p>")
}
return output;