SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
Google Apps Script
Aprenda na prática - Parte 1

Prof. Sérgio Souza Costa
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
O que é Google Apps Script (GAS)?
Google Apps Script é um ambiente de desenvolvimento
JavaScript na nuvem que provê um modo fácil de
automação de tarefas que usem os produtos da Google
integrado com serviços de terceiros.
O que é Google Apps Script (GAS)?
Google Apps Script é um ambiente de desenvolvimento
JavaScript na nuvem que provê um modo fácil de
automação de tarefas que usem os produtos da Google
integrado com serviços de terceiros.
No link abaixo tenho disponível
uma aula detalhada sobre
JavaScript:
http://www.slideshare.net/skosta/j12591397
Integração entre produtos
Calendar
Spreadsheet

Documents

Maps

Gmail
Apps Script

Translate

Sites

Contacts

Google API
Breve histórico

Fonte: Arun Nagarajan
Introdução (overview)
Agradecimento ao Alexandre Jacket por ter cedido a
apresentação no link abaixo:

http://www.slideshare.net/alejacquet/google-appsscript-overview-22980983

Alexandre Jacquet

Breno Araújo

alejacquet@gmail.com

breno.araujo@acm.org
Abram esta apresentação
Resumo dos serviços
https://developers.google.com/apps-script/reference/

Fonte: Arun Nagarajan
Roteiro

Parte 1
Google Documents
Google Planilha

Parte 2
Webapps
Google Sites
Roteiro

Parte 1
Google Documents
Google Planilha Antes de seguir,
será necessário ter
uma conta na
Parte 2
Google.
Webapps
Google Sites
Criando funções para planilha
Crie uma função que recebe um ou mais valores como argumento, de
uma ou mais células.

Estes argumentos serão usados dentro da função para gerar o
resultado, que será retornado pela função para a célula que chamou a
função.
https://developers.google.com/apps-script/execution_custom_functions
Criando funções para planilha

function binary2decimal (num) {
var str = new String(num)
var tam = str.length - 1
var dec = 0
for (var i = tam; i >=0 ; i--) {
dec = dec + ( str[tam-i] * (Math.pow(2, i)) )
}
return dec
}
Selecione:
Ferramenta -> Editor
de Scripts
Selecione:
Ferramenta -> Editor de
Scripts

Escolha projeto
em branco
Selecione:

Copie o código
abaixo no editor.

Ferramenta -> Editor de
Scripts

function binary2decimal (num) {
var str = new String(num)
var tam = str.length - 1
var dec = 0
for (var i = tam; i >=0 ; i--) {
dec = dec + ( str[tam-i] * (Math.pow(2, i)) )
}
return dec
}
Selecione:

Copie o código
abaixo no editor.

Ferramenta -> Editor de
Scripts

Para quem não fez os passos
anteriores, pode abrir o link abaixo
e criar uma cópia do arquivo.

function binary2decimal https://docs.google.
(num) {
com/spreadsheet/ccc?
var str = new String(num)
var tam = str.length -key=0Avv93GPSzr6FdHpiT29mT3E
1
yajVoWUFNSTFfaDVMdVE&usp=s
var dec = 0
haring
for (var i = tam; i >=0 ; i--) {
dec = dec + ( str[tam-i] * (Math.pow(2, i)) )
}
return dec
}
Criando funções para planilha
Mãos a obra !!!
Atividade, codifique uma função chamada toDecimal, que
usa dois argumento, um número e a base. Observe que
basta adaptar o código anterior para receber mais um
parâmetro (base) e este ser usado na expressão, como
abaixo:

dec = dec + ( str[tam-i] * (Math.pow(base, i)) )
Criando funções para planilha
Função sobre uma faixa de valores
Uma faixa de valores será enviada com um vetor (uma
dimensão) ou matriz (duas dimensões).

range é um vetor

function minhaMedia(range){
var soma = 0
for (var i in range) {
soma+= parseFloat(range[i])
}
return soma / range.length
}
Criando funções para planilha
Mãos a obra !!!
Atividade, codifique uma função que retorne o número de
alunos aprovados. Media das 3 notas deve ser maior ou
igual a 7. Observe que neste caso temos uma matriz.
Lendo valores da planilha

A informação é
capturada através de
logs (registros). Útil
para depurar.

Lê todos os
valores da
planilha ativa
como uma matriz.

function printProductInfo() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
for (var i = 0; i < data.length; i++) {
Logger.log("Nome: " + data[i][0]);
Logger.log("Preço: " + data[i][1]);
}
}
Lendo valores da planilha

pegando dados

1. Abrir a seguinte planilha: https:
//docs.google.com/spreadsheet/ccc?
key=0Avv93GPSzr6FdDhHc29PX29iNm5seU50c
TlvYTZwSlE&usp=sharing
Lendo valores da planilha

pegando dados
2. Selecione
“Gerenciador
de scripts”
Lendo valores da planilha

pegando dados
2. Selecione
“Gerenciador
de scripts”
3. Click em
executar
Lendo valores da planilha

pegando dados
2. Selecione
“Gerenciador
de scripts”

4. Click em
Editar
Lendo valores da planilha

pegando dados
2. Selecione
“Gerenciador
de scripts”

5. Click em
Registros
Lendo valores da planilha

pegando dados
2. Selecione
“Gerenciador
de scripts”

5. Click em
Registros
Criando documentos
1. Abra o script no link abaixo e click executar:
https://script.google.com/d/1B8zP8U00Kl84Vlp8oIEKeV00bQETz_U4rraHSdJYdvu7CfbGT6NR5ij/edit?usp=sharing

function createDoc() {
var doc = DocumentApp.create('Sample Document');
var body = doc.getBody();
var rowsData = [['Plants', 'Animals'],
['Ficus', 'Goat'], ['Basil', 'Cat'], ['Moss', 'Frog']];
body.insertParagraph(0, doc.getName())
.setHeading(DocumentApp.ParagraphHeading.HEADING1);
table = body.appendTable(rowsData);
table.getRow(0).editAsText().setBold(true);
}
Criando documentos

Estrutura de um
documento.
Integração - planilha e documento
Script para criação de listas de exercícios no google docs
Professores estão sempre elaborando listas de exercícios, consumindo um tempo nesta
atividade. Esta é uma dica para os professores que querem automatizar esta tarefa, bem
como começar a usar scripts nos aplicativos google. Completado este passos, você
conseguira criar uma base de questões em uma planilha e um script que cria uma dada
lista de exercícios com uma dada quantidade de questões.
http://sergioscosta.blogspot.com.br/2013/08/script-para-criacao-de-listas-de.html

Façam o
exercício do blog.
Spreadsheet

Documents
Substituindo texto
Substituindo texto
1. Abra e crie uma cópia
do documento do link
abaixo:

var ui = DocumentApp.getUi();
function onOpen() {
ui.createMenu('Mais')
.addItem('Atualiza', 'atualiza')
.addToUi();
}

https://docs.google.
com/document/d/1Wrzhe7Axf8
LlQxm2t4mpitd_XOvfHVlL1D5q
7yzz5Ec/edit?usp=sharing

function atualiza() {
var result = ui.prompt('Atualizando o nome',
'Entre com o nome do aluno:', ui.ButtonSet.OK_CANCEL);

2. Selecione o menu
Mais -> Atualiza

if (result.getSelectedButton() == ui.Button.OK) {
var name = result.getResponseText()
var body = DocumentApp.getActiveDocument()
.getBody();
body.replaceText('{nome}', name);
}
}

Código que faz a
subsituição
Integração - planilha, documento e
drive
Integração - planilha, documento e
drive
1. Abra e execute o documento do
link abaixo:
https://docs.google.com/spreadsheet/ccc?
key=0Avv93GPSzr6FdGJWQ3FIaDk4VXpWT
E1iVVdySFN5dVE&usp=sharing
function copiaCertificados() {
var file = DriveApp.getFileById(
"1gE4V_0GZUx4byQYQywyg3reqRpF_xLr_hQZKCD_uPbo")
var sheet = SpreadsheetApp.getActive();
var data = sheet.getDataRange().getValues();
for (var i in data) {
var file2 = file.makeCopy("certificado_"+data[i][0])
var body = DocumentApp.openById(file2.getId()).getBody();
body.replaceText('{nome}', data[i][0]);
}
}

Substitua pelo id da
cópia do arquivo criado
anteriormente
Referências
1. Google Apps Script Reference http://www.google.
com/script/start/

Weitere ähnliche Inhalte

Was ist angesagt?

Lean TI - Especificação Funcional de Requisitos
Lean TI -  Especificação Funcional  de RequisitosLean TI -  Especificação Funcional  de Requisitos
Lean TI - Especificação Funcional de RequisitosAdemar Leal da Silva
 
23 ferramentas para a gestão de projetos sociais
23 ferramentas para a gestão de projetos sociais23 ferramentas para a gestão de projetos sociais
23 ferramentas para a gestão de projetos sociaisONGestão
 
Plano de Projeto de Implantação de Software ERP Vertical de Saúde integrado c...
Plano de Projeto de Implantação de Software ERP Vertical de Saúde integrado c...Plano de Projeto de Implantação de Software ERP Vertical de Saúde integrado c...
Plano de Projeto de Implantação de Software ERP Vertical de Saúde integrado c...Marcelo Schumacher
 
Từ Gà Đến Pro Git và GitHub trong 60 phút
Từ Gà Đến Pro Git và GitHub trong 60 phútTừ Gà Đến Pro Git và GitHub trong 60 phút
Từ Gà Đến Pro Git và GitHub trong 60 phútHuy Hoàng Phạm
 
Fluxo de Processos do Guia PMBOK® – 6ª Edição (Versão simplificada)
Fluxo de Processos do Guia PMBOK® – 6ª Edição (Versão simplificada)Fluxo de Processos do Guia PMBOK® – 6ª Edição (Versão simplificada)
Fluxo de Processos do Guia PMBOK® – 6ª Edição (Versão simplificada)Ricardo Viana Vargas
 
Introdução ao 12 Factors APP
Introdução ao 12 Factors APPIntrodução ao 12 Factors APP
Introdução ao 12 Factors APPDouglas Alonso
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + PythonMateus Padua
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terEmerson Macedo
 
Processos PMBOK por área
Processos PMBOK por áreaProcessos PMBOK por área
Processos PMBOK por áreaCarlos Halrik
 
Sistemas Distribuídos - Replicação de Banco de Dados
Sistemas Distribuídos - Replicação de Banco de DadosSistemas Distribuídos - Replicação de Banco de Dados
Sistemas Distribuídos - Replicação de Banco de DadosValdir Junior
 
Git 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGit 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGeoff Hoffman
 
Exemplo De Plano De Gerenciamento De Projeto
Exemplo De Plano De Gerenciamento De ProjetoExemplo De Plano De Gerenciamento De Projeto
Exemplo De Plano De Gerenciamento De Projetolhencar
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareÁlvaro Farias Pinheiro
 
Gerenciamento de integração de projetos
Gerenciamento de integração de projetosGerenciamento de integração de projetos
Gerenciamento de integração de projetosJúnior Rodrigues
 

Was ist angesagt? (20)

Lean TI - Especificação Funcional de Requisitos
Lean TI -  Especificação Funcional  de RequisitosLean TI -  Especificação Funcional  de Requisitos
Lean TI - Especificação Funcional de Requisitos
 
23 ferramentas para a gestão de projetos sociais
23 ferramentas para a gestão de projetos sociais23 ferramentas para a gestão de projetos sociais
23 ferramentas para a gestão de projetos sociais
 
Plano de Projeto de Implantação de Software ERP Vertical de Saúde integrado c...
Plano de Projeto de Implantação de Software ERP Vertical de Saúde integrado c...Plano de Projeto de Implantação de Software ERP Vertical de Saúde integrado c...
Plano de Projeto de Implantação de Software ERP Vertical de Saúde integrado c...
 
Gerenciamento de Projetos
Gerenciamento de ProjetosGerenciamento de Projetos
Gerenciamento de Projetos
 
Từ Gà Đến Pro Git và GitHub trong 60 phút
Từ Gà Đến Pro Git và GitHub trong 60 phútTừ Gà Đến Pro Git và GitHub trong 60 phút
Từ Gà Đến Pro Git và GitHub trong 60 phút
 
Implantação de um PMO modelo Canvas
Implantação de um PMO modelo CanvasImplantação de um PMO modelo Canvas
Implantação de um PMO modelo Canvas
 
Git e GitHub
Git e GitHubGit e GitHub
Git e GitHub
 
Fluxo de Processos do Guia PMBOK® – 6ª Edição (Versão simplificada)
Fluxo de Processos do Guia PMBOK® – 6ª Edição (Versão simplificada)Fluxo de Processos do Guia PMBOK® – 6ª Edição (Versão simplificada)
Fluxo de Processos do Guia PMBOK® – 6ª Edição (Versão simplificada)
 
Introdução ao 12 Factors APP
Introdução ao 12 Factors APPIntrodução ao 12 Factors APP
Introdução ao 12 Factors APP
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
 
Aprendendo Git
Aprendendo GitAprendendo Git
Aprendendo Git
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
Processos PMBOK por área
Processos PMBOK por áreaProcessos PMBOK por área
Processos PMBOK por área
 
Apostila - ProjectLibre 1.5
Apostila - ProjectLibre 1.5Apostila - ProjectLibre 1.5
Apostila - ProjectLibre 1.5
 
Sistemas Distribuídos - Replicação de Banco de Dados
Sistemas Distribuídos - Replicação de Banco de DadosSistemas Distribuídos - Replicação de Banco de Dados
Sistemas Distribuídos - Replicação de Banco de Dados
 
Git 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using GitGit 101 - Crash Course in Version Control using Git
Git 101 - Crash Course in Version Control using Git
 
Exemplo De Plano De Gerenciamento De Projeto
Exemplo De Plano De Gerenciamento De ProjetoExemplo De Plano De Gerenciamento De Projeto
Exemplo De Plano De Gerenciamento De Projeto
 
Java script aula 04 - objeto array
Java script   aula 04 - objeto arrayJava script   aula 04 - objeto array
Java script aula 04 - objeto array
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de Software
 
Gerenciamento de integração de projetos
Gerenciamento de integração de projetosGerenciamento de integração de projetos
Gerenciamento de integração de projetos
 

Ähnlich wie Google apps script - Parte - 1

Apresentação de Django Extension
Apresentação de Django ExtensionApresentação de Django Extension
Apresentação de Django ExtensionMoacir Filho
 
Oficina Python e Google App Engine
Oficina Python e Google App EngineOficina Python e Google App Engine
Oficina Python e Google App EngineRodrigo Amaral
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Carlos Duarte do Nascimento
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineCampus Party Brasil
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSThiago Rodrigues
 
Visualg primeira interação
Visualg   primeira interaçãoVisualg   primeira interação
Visualg primeira interaçãoHumberto Cepep
 
plano_de_projeto_controlart_final
plano_de_projeto_controlart_finalplano_de_projeto_controlart_final
plano_de_projeto_controlart_finaluserrx
 
plano_de_projeto_controlart_rascunho
plano_de_projeto_controlart_rascunhoplano_de_projeto_controlart_rascunho
plano_de_projeto_controlart_rascunhouserrx
 
Evolução das arquiteturas para aplicações Web
Evolução das arquiteturas para aplicações WebEvolução das arquiteturas para aplicações Web
Evolução das arquiteturas para aplicações WebBreno Vitorino
 
Aplicações com Tecnologias Web
Aplicações com Tecnologias WebAplicações com Tecnologias Web
Aplicações com Tecnologias WebRildo Pragana
 
Mini curso introdutório ao Django
Mini curso introdutório ao DjangoMini curso introdutório ao Django
Mini curso introdutório ao DjangoVinicius Mendes
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com AngularElmano Cavalcanti
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Daniel Makiyama
 

Ähnlich wie Google apps script - Parte - 1 (20)

Apresentação de Django Extension
Apresentação de Django ExtensionApresentação de Django Extension
Apresentação de Django Extension
 
Oficina Python e Google App Engine
Oficina Python e Google App EngineOficina Python e Google App Engine
Oficina Python e Google App Engine
 
Django Módulo Básico Parte II
Django Módulo Básico Parte IIDjango Módulo Básico Parte II
Django Módulo Básico Parte II
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSS
 
My first app django
My first app djangoMy first app django
My first app django
 
Visualg primeira interação
Visualg   primeira interaçãoVisualg   primeira interação
Visualg primeira interação
 
plano_de_projeto_controlart_final
plano_de_projeto_controlart_finalplano_de_projeto_controlart_final
plano_de_projeto_controlart_final
 
plano_de_projeto_controlart_rascunho
plano_de_projeto_controlart_rascunhoplano_de_projeto_controlart_rascunho
plano_de_projeto_controlart_rascunho
 
Relatório
RelatórioRelatório
Relatório
 
Palestra parse
Palestra parsePalestra parse
Palestra parse
 
Evolução das arquiteturas para aplicações Web
Evolução das arquiteturas para aplicações WebEvolução das arquiteturas para aplicações Web
Evolução das arquiteturas para aplicações Web
 
Aplicações com Tecnologias Web
Aplicações com Tecnologias WebAplicações com Tecnologias Web
Aplicações com Tecnologias Web
 
Mini curso introdutório ao Django
Mini curso introdutório ao DjangoMini curso introdutório ao Django
Mini curso introdutório ao Django
 
Grunt
GruntGrunt
Grunt
 
#{GCODE}
#{GCODE}#{GCODE}
#{GCODE}
 
Introdução à Programação Web com Angular
Introdução à Programação Web com AngularIntrodução à Programação Web com Angular
Introdução à Programação Web com Angular
 
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
Aprendendo Na Prática: Aplicativos Web com HTML5, Angular.js, Twitter Bootstr...
 

Mehr von Sérgio Souza Costa

Expressões aritméticas, relacionais e lógicas
Expressões aritméticas, relacionais e lógicasExpressões aritméticas, relacionais e lógicas
Expressões aritméticas, relacionais e lógicasSérgio Souza Costa
 
De algoritmos à programas de computador
De algoritmos à programas de computadorDe algoritmos à programas de computador
De algoritmos à programas de computadorSérgio Souza Costa
 
Introdução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmosIntrodução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmosSérgio Souza Costa
 
Minicurso de introdução a banco de dados geográficos
Minicurso de introdução a banco de dados geográficosMinicurso de introdução a banco de dados geográficos
Minicurso de introdução a banco de dados geográficosSérgio Souza Costa
 
Banco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de EncerramentoBanco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de EncerramentoSérgio Souza Costa
 
Banco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagemBanco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagemSérgio Souza Costa
 
Banco de dados geográficos - Aula de abertura
Banco de dados geográficos - Aula de aberturaBanco de dados geográficos - Aula de abertura
Banco de dados geográficos - Aula de aberturaSérgio Souza Costa
 
Linguagem SQL e Extensões Espacias - Introdução
Linguagem SQL e Extensões Espacias - IntroduçãoLinguagem SQL e Extensões Espacias - Introdução
Linguagem SQL e Extensões Espacias - IntroduçãoSérgio Souza Costa
 
Gödel’s incompleteness theorems
Gödel’s incompleteness theoremsGödel’s incompleteness theorems
Gödel’s incompleteness theoremsSérgio Souza Costa
 
DBCells - an open and global multi-scale linked cells
DBCells - an open and global multi-scale linked cellsDBCells - an open and global multi-scale linked cells
DBCells - an open and global multi-scale linked cellsSérgio Souza Costa
 
Conceitos básicos de orientação a objetos
Conceitos básicos de orientação a objetosConceitos básicos de orientação a objetos
Conceitos básicos de orientação a objetosSérgio Souza Costa
 
Polymorphism (Ad-hoc and Universal)
Polymorphism (Ad-hoc and Universal)Polymorphism (Ad-hoc and Universal)
Polymorphism (Ad-hoc and Universal)Sérgio Souza Costa
 
Relações (composição e agregação)
Relações (composição e agregação)Relações (composição e agregação)
Relações (composição e agregação)Sérgio Souza Costa
 

Mehr von Sérgio Souza Costa (20)

Expressões aritméticas, relacionais e lógicas
Expressões aritméticas, relacionais e lógicasExpressões aritméticas, relacionais e lógicas
Expressões aritméticas, relacionais e lógicas
 
De algoritmos à programas de computador
De algoritmos à programas de computadorDe algoritmos à programas de computador
De algoritmos à programas de computador
 
Introdução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmosIntrodução ao pensamento computacional e aos algoritmos
Introdução ao pensamento computacional e aos algoritmos
 
Minicurso de introdução a banco de dados geográficos
Minicurso de introdução a banco de dados geográficosMinicurso de introdução a banco de dados geográficos
Minicurso de introdução a banco de dados geográficos
 
Modelagem de dados geográficos
Modelagem de dados geográficosModelagem de dados geográficos
Modelagem de dados geográficos
 
Banco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de EncerramentoBanco de dados geográfico - Aula de Encerramento
Banco de dados geográfico - Aula de Encerramento
 
Banco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagemBanco de dados geográficos – Arquiteturas, banco de dados e modelagem
Banco de dados geográficos – Arquiteturas, banco de dados e modelagem
 
Banco de dados geográficos - Aula de abertura
Banco de dados geográficos - Aula de aberturaBanco de dados geográficos - Aula de abertura
Banco de dados geográficos - Aula de abertura
 
Linguagem SQL e Extensões Espacias - Introdução
Linguagem SQL e Extensões Espacias - IntroduçãoLinguagem SQL e Extensões Espacias - Introdução
Linguagem SQL e Extensões Espacias - Introdução
 
Gödel’s incompleteness theorems
Gödel’s incompleteness theoremsGödel’s incompleteness theorems
Gödel’s incompleteness theorems
 
Turing e o problema da decisão
Turing e o problema da decisãoTuring e o problema da decisão
Turing e o problema da decisão
 
DBCells - an open and global multi-scale linked cells
DBCells - an open and global multi-scale linked cellsDBCells - an open and global multi-scale linked cells
DBCells - an open and global multi-scale linked cells
 
Conceitos básicos de orientação a objetos
Conceitos básicos de orientação a objetosConceitos básicos de orientação a objetos
Conceitos básicos de orientação a objetos
 
Polymorphism (Ad-hoc and Universal)
Polymorphism (Ad-hoc and Universal)Polymorphism (Ad-hoc and Universal)
Polymorphism (Ad-hoc and Universal)
 
Herança e Encapsulamento
Herança e EncapsulamentoHerança e Encapsulamento
Herança e Encapsulamento
 
Relações (composição e agregação)
Relações (composição e agregação)Relações (composição e agregação)
Relações (composição e agregação)
 
Abstract classes and interfaces
Abstract classes and interfacesAbstract classes and interfaces
Abstract classes and interfaces
 
Introdução ao Prolog
Introdução ao PrologIntrodução ao Prolog
Introdução ao Prolog
 
Heap - Python
Heap - PythonHeap - Python
Heap - Python
 
Paradigma lógico
Paradigma lógicoParadigma lógico
Paradigma lógico
 

Kürzlich hochgeladen

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 

Kürzlich hochgeladen (6)

ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Google apps script - Parte - 1

  • 1. Google Apps Script Aprenda na prática - Parte 1 Prof. Sérgio Souza Costa
  • 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. O que é Google Apps Script (GAS)? Google Apps Script é um ambiente de desenvolvimento JavaScript na nuvem que provê um modo fácil de automação de tarefas que usem os produtos da Google integrado com serviços de terceiros.
  • 4. O que é Google Apps Script (GAS)? Google Apps Script é um ambiente de desenvolvimento JavaScript na nuvem que provê um modo fácil de automação de tarefas que usem os produtos da Google integrado com serviços de terceiros. No link abaixo tenho disponível uma aula detalhada sobre JavaScript: http://www.slideshare.net/skosta/j12591397
  • 7. Introdução (overview) Agradecimento ao Alexandre Jacket por ter cedido a apresentação no link abaixo: http://www.slideshare.net/alejacquet/google-appsscript-overview-22980983 Alexandre Jacquet Breno Araújo alejacquet@gmail.com breno.araujo@acm.org Abram esta apresentação
  • 9. Roteiro Parte 1 Google Documents Google Planilha Parte 2 Webapps Google Sites
  • 10. Roteiro Parte 1 Google Documents Google Planilha Antes de seguir, será necessário ter uma conta na Parte 2 Google. Webapps Google Sites
  • 11. Criando funções para planilha Crie uma função que recebe um ou mais valores como argumento, de uma ou mais células. Estes argumentos serão usados dentro da função para gerar o resultado, que será retornado pela função para a célula que chamou a função. https://developers.google.com/apps-script/execution_custom_functions
  • 12. Criando funções para planilha function binary2decimal (num) { var str = new String(num) var tam = str.length - 1 var dec = 0 for (var i = tam; i >=0 ; i--) { dec = dec + ( str[tam-i] * (Math.pow(2, i)) ) } return dec }
  • 14. Selecione: Ferramenta -> Editor de Scripts Escolha projeto em branco
  • 15. Selecione: Copie o código abaixo no editor. Ferramenta -> Editor de Scripts function binary2decimal (num) { var str = new String(num) var tam = str.length - 1 var dec = 0 for (var i = tam; i >=0 ; i--) { dec = dec + ( str[tam-i] * (Math.pow(2, i)) ) } return dec }
  • 16. Selecione: Copie o código abaixo no editor. Ferramenta -> Editor de Scripts Para quem não fez os passos anteriores, pode abrir o link abaixo e criar uma cópia do arquivo. function binary2decimal https://docs.google. (num) { com/spreadsheet/ccc? var str = new String(num) var tam = str.length -key=0Avv93GPSzr6FdHpiT29mT3E 1 yajVoWUFNSTFfaDVMdVE&usp=s var dec = 0 haring for (var i = tam; i >=0 ; i--) { dec = dec + ( str[tam-i] * (Math.pow(2, i)) ) } return dec }
  • 17. Criando funções para planilha Mãos a obra !!! Atividade, codifique uma função chamada toDecimal, que usa dois argumento, um número e a base. Observe que basta adaptar o código anterior para receber mais um parâmetro (base) e este ser usado na expressão, como abaixo: dec = dec + ( str[tam-i] * (Math.pow(base, i)) )
  • 18. Criando funções para planilha Função sobre uma faixa de valores Uma faixa de valores será enviada com um vetor (uma dimensão) ou matriz (duas dimensões). range é um vetor function minhaMedia(range){ var soma = 0 for (var i in range) { soma+= parseFloat(range[i]) } return soma / range.length }
  • 19. Criando funções para planilha Mãos a obra !!! Atividade, codifique uma função que retorne o número de alunos aprovados. Media das 3 notas deve ser maior ou igual a 7. Observe que neste caso temos uma matriz.
  • 20. Lendo valores da planilha A informação é capturada através de logs (registros). Útil para depurar. Lê todos os valores da planilha ativa como uma matriz. function printProductInfo() { var sheet = SpreadsheetApp.getActiveSheet(); var data = sheet.getDataRange().getValues(); for (var i = 0; i < data.length; i++) { Logger.log("Nome: " + data[i][0]); Logger.log("Preço: " + data[i][1]); } }
  • 21. Lendo valores da planilha pegando dados 1. Abrir a seguinte planilha: https: //docs.google.com/spreadsheet/ccc? key=0Avv93GPSzr6FdDhHc29PX29iNm5seU50c TlvYTZwSlE&usp=sharing
  • 22. Lendo valores da planilha pegando dados 2. Selecione “Gerenciador de scripts”
  • 23. Lendo valores da planilha pegando dados 2. Selecione “Gerenciador de scripts” 3. Click em executar
  • 24. Lendo valores da planilha pegando dados 2. Selecione “Gerenciador de scripts” 4. Click em Editar
  • 25. Lendo valores da planilha pegando dados 2. Selecione “Gerenciador de scripts” 5. Click em Registros
  • 26. Lendo valores da planilha pegando dados 2. Selecione “Gerenciador de scripts” 5. Click em Registros
  • 27. Criando documentos 1. Abra o script no link abaixo e click executar: https://script.google.com/d/1B8zP8U00Kl84Vlp8oIEKeV00bQETz_U4rraHSdJYdvu7CfbGT6NR5ij/edit?usp=sharing function createDoc() { var doc = DocumentApp.create('Sample Document'); var body = doc.getBody(); var rowsData = [['Plants', 'Animals'], ['Ficus', 'Goat'], ['Basil', 'Cat'], ['Moss', 'Frog']]; body.insertParagraph(0, doc.getName()) .setHeading(DocumentApp.ParagraphHeading.HEADING1); table = body.appendTable(rowsData); table.getRow(0).editAsText().setBold(true); }
  • 29. Integração - planilha e documento Script para criação de listas de exercícios no google docs Professores estão sempre elaborando listas de exercícios, consumindo um tempo nesta atividade. Esta é uma dica para os professores que querem automatizar esta tarefa, bem como começar a usar scripts nos aplicativos google. Completado este passos, você conseguira criar uma base de questões em uma planilha e um script que cria uma dada lista de exercícios com uma dada quantidade de questões. http://sergioscosta.blogspot.com.br/2013/08/script-para-criacao-de-listas-de.html Façam o exercício do blog. Spreadsheet Documents
  • 31. Substituindo texto 1. Abra e crie uma cópia do documento do link abaixo: var ui = DocumentApp.getUi(); function onOpen() { ui.createMenu('Mais') .addItem('Atualiza', 'atualiza') .addToUi(); } https://docs.google. com/document/d/1Wrzhe7Axf8 LlQxm2t4mpitd_XOvfHVlL1D5q 7yzz5Ec/edit?usp=sharing function atualiza() { var result = ui.prompt('Atualizando o nome', 'Entre com o nome do aluno:', ui.ButtonSet.OK_CANCEL); 2. Selecione o menu Mais -> Atualiza if (result.getSelectedButton() == ui.Button.OK) { var name = result.getResponseText() var body = DocumentApp.getActiveDocument() .getBody(); body.replaceText('{nome}', name); } } Código que faz a subsituição
  • 32. Integração - planilha, documento e drive
  • 33. Integração - planilha, documento e drive 1. Abra e execute o documento do link abaixo: https://docs.google.com/spreadsheet/ccc? key=0Avv93GPSzr6FdGJWQ3FIaDk4VXpWT E1iVVdySFN5dVE&usp=sharing function copiaCertificados() { var file = DriveApp.getFileById( "1gE4V_0GZUx4byQYQywyg3reqRpF_xLr_hQZKCD_uPbo") var sheet = SpreadsheetApp.getActive(); var data = sheet.getDataRange().getValues(); for (var i in data) { var file2 = file.makeCopy("certificado_"+data[i][0]) var body = DocumentApp.openById(file2.getId()).getBody(); body.replaceText('{nome}', data[i][0]); } } Substitua pelo id da cópia do arquivo criado anteriormente
  • 34. Referências 1. Google Apps Script Reference http://www.google. com/script/start/