que retornam conteúdo textual bruto de vários tipos MIME.
Quando um script é publicado como um app da Web, as funções de callback doGet e
doPost são executadas sempre que uma solicitação é feita ao URL do script. Em vez de
retornar um objeto de interface do usuário criado com o
serviço HTML, o
serviço de conteúdo pode retornar conteúdo
textual bruto. Escreva scripts que atuem como serviços, respondendo a solicitações GET e POST e fornecendo dados de vários tipos MIME.
Noções básicas
O exemplo a seguir mostra como usar o serviço de conteúdo:
function doGet() {
return ContentService.createTextOutput('Hello, world!');
}
Implante o script como um app da Web.
Siga as mesmas etapas de veiculação de uma interface do usuário. Quando uma solicitação GET é feita
para o URL do script, o texto Hello, world! é retornado. Além de texto simples, o serviço é compatível com o retorno de conteúdo ATOM, CSV, iCal, JavaScript, JSON, RSS, vCard e XML.
Veicular feeds RSS
Filtre um feed RSS para modificar o conteúdo dele. Por exemplo, edite um feed do XKCD para incluir texto alternativo diretamente no feed e melhorar a visualização em dispositivos móveis.
function doGet() {
var feed = UrlFetchApp.fetch('http://xkcd.com/rss.xml').getContentText();
feed = feed.replace(
/(<img.*?alt="(.*?)".*?>)/g,
'$1' + new Array(10).join('<br />') + '$2');
return ContentService.createTextOutput(feed)
.setMimeType(ContentService.MimeType.RSS);
}
O código consiste nos seguintes componentes: Use o serviço de busca de URL para buscar o feed RSS original do XKCD. Use uma expressão regular JavaScript padrão para fazer as substituições. Encapsule o feed editado em um objeto TextOutput e defina o tipo MIME como RSS.
Para ver isso em ação, publique o script como um web app e permita o acesso anônimo. Adicione o URL do serviço ao seu leitor de RSS ou acesse diretamente em um navegador da Web.
Servir JSON de scripts
Use o serviço de conteúdo para veicular JSON a outros scripts, sites e serviços. O script a seguir implementa um serviço que verifica se um horário do calendário está disponível em um momento específico.
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(JSON.stringify(result))
.setMimeType(ContentService.MimeType.JSON);
}
Publique como um web app anônimo. Os usuários podem adicionar parâmetros de URL ao final do URL do serviço. Os parâmetros start e end especificam um período na época Unix padrão.
curl -L URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000
O serviço retorna um JSON que informa se o calendário está aberto nesse período.
{"available":true}
Exibir JSONP em páginas da Web
Com uma pequena mudança, seu serviço JSON pode se tornar JSONP para ser chamado do JavaScript em um navegador.
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);
}
Para chamar esse serviço de um navegador, crie uma tag script com um atributo src definido como o URL do serviço e um parâmetro prefix adicional. Esse é o nome
da função no JavaScript do lado do cliente que é chamada com o valor
retornado pelo serviço.
<script src="URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000&prefix=alert"></script>
Este exemplo mostra uma caixa de mensagem no navegador com a saída do serviço, usando a função alert integrada do navegador como prefixo. O código JavaScript
retornado é semelhante a este:
alert({"available":true})
Tenha cuidado ao usar JSONP. Como qualquer pessoa pode incorporar a tag script na página da Web, você pode ser enganado e executar o script ao visitar um site malicioso, que pode capturar os dados retornados. Verifique se os scripts JSONP são somente leitura e retornam apenas informações não sensíveis.
Redirecionamentos
Por segurança, o conteúdo retornado pelo serviço de conteúdo é redirecionado para um
URL único em script.googleusercontent.com. Se você usar o serviço de conteúdo
para retornar dados a outro aplicativo, verifique se o cliente HTTP está configurado para
seguir redirecionamentos. Para o utilitário de linha de comando curl, adicione a flag -L. Consulte a documentação do seu cliente HTTP para mais informações.