Serviço de conteúdo

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.