Servizio contenuti

che restituiscono contenuti testuali non elaborati di vari tipi MIME.

Quando uno script viene pubblicato come app web, le funzioni di callback doGet e doPost vengono eseguite ogni volta che viene effettuata una richiesta all'URL dello script. Anziché restituire un oggetto dell'interfaccia utente creato con il servizio HTML, il servizio Content può restituire contenuti di testo non elaborati. Scrivi script che fungano da servizi, rispondendo alle richieste GET e POST e pubblicando dati di vari tipi MIME.

Nozioni di base

L'esempio seguente mostra come utilizzare il servizio Content:

function doGet() {
  return ContentService.createTextOutput('Hello, world!');
}

Esegui il deployment dello script come app web. Segui gli stessi passaggi per pubblicare un'interfaccia utente. Quando viene effettuata una richiesta GET all'URL dello script, viene restituito il testo Hello, world!. Oltre al testo normale, il servizio supporta la restituzione di contenuti ATOM, CSV, iCal, JavaScript, JSON, RSS, vCard e XML.

Pubblicare feed RSS

Filtra un feed RSS per modificarne i contenuti. Ad esempio, modifica un feed XKCD per includere il testo alternativo direttamente nel feed per una migliore visualizzazione sui dispositivi mobili.

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);
}

Il codice è costituito dai seguenti componenti. Utilizza il servizio di recupero URL per recuperare il feed RSS XKCD originale. Utilizza un'espressione regolare JavaScript standard per eseguire le sostituzioni. Racchiudi il feed modificato in un oggetto TextOutput e imposta il tipo MIME su RSS.

Per vedere questo in azione, pubblica lo script come app web e consenti l'accesso anonimo. Aggiungi l'URL del servizio al tuo lettore RSS o visita direttamente la pagina in un browser web.

Pubblicare JSON dagli script

Utilizza il servizio Content per pubblicare JSON in altri script, siti web e servizi. Il seguente script implementa un servizio che verifica se uno spazio del calendario è disponibile a un'ora specifica.

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);
}

Pubblica questo servizio come app web anonima. Gli utenti possono aggiungere parametri URL alla fine dell'URL del servizio. I parametri start e end specificano un intervallo di tempo nell'epoca Unix standard.

curl -L URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000

Il servizio restituisce un file JSON che indica se il calendario è aperto in quell'intervallo.

{"available":true}

Pubblicare JSONP nelle pagine web

Con una piccola modifica, il tuo servizio JSON può diventare JSONP per essere chiamato da JavaScript in un browser.

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);
}

Per chiamare questo servizio da un browser, crea un tag script con un attributo src impostato sull'URL del servizio e un parametro prefix aggiuntivo. Questo è il nome della funzione nel JavaScript lato client che viene chiamata con il valore restituito dal servizio.

<script src="URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000&prefix=alert"></script>

Questo esempio mostra una casella di messaggio nel browser con l'output del servizio, utilizzando la funzione alert integrata del browser come prefisso. Il codice JavaScript restituito ha questo aspetto:

alert({"available":true})

Fai attenzione quando utilizzi JSONP. Poiché chiunque può incorporare il tag script nella propria pagina web, puoi essere indotto a eseguire lo script quando visiti un sito web dannoso, che può quindi acquisire i dati restituiti. Assicurati che gli script JSONP siano di sola lettura e restituiscano solo informazioni non sensibili.

Reindirizzamenti

Per motivi di sicurezza, i contenuti restituiti dal servizio Contenuti vengono reindirizzati a un URL monouso all'indirizzo script.googleusercontent.com. Se utilizzi il servizio Contenuti per restituire dati a un'altra applicazione, assicurati che il client HTTP sia configurato per seguire i reindirizzamenti. Per l'utilità della riga di comando curl, aggiungi il flag -L. Per saperne di più, consulta la documentazione del client HTTP.