Service de contenu

qui renvoient le contenu textuel brut de différents types MIME.

Lorsqu'un script est publié en tant qu'application Web, les fonctions de rappel doGet et doPost s'exécutent chaque fois qu'une requête est envoyée à l'URL du script. Au lieu de renvoyer un objet d'interface utilisateur créé avec le service HTML, le service Content peut renvoyer du contenu textuel brut. Écrivez des scripts qui agissent en tant que services, en répondant aux requêtes GET et POST et en fournissant des données de différents types MIME.

Principes de base

L'exemple suivant montre comment utiliser le service de contenu :

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

Déployez le script en tant qu'application Web. Suivez la même procédure que pour diffuser une interface utilisateur. Lorsqu'une requête GET est envoyée à l'URL du script, le texte Hello, world! est renvoyé. En plus du texte brut, le service est compatible avec le contenu ATOM, CSV, iCal, JavaScript, JSON, RSS, vCard et XML.

Diffuser des flux RSS

Filtrez un flux RSS pour modifier son contenu. Par exemple, modifiez un flux XKCD pour inclure le texte alternatif directement dans le flux afin d'améliorer l'affichage sur mobile.

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

Le code se compose des éléments suivants. Utilisez le service de récupération d'URL pour récupérer le flux RSS XKCD d'origine. Utilisez une expression régulière JavaScript standard pour effectuer les substitutions. Encapsulez le flux modifié dans un objet TextOutput et définissez le type MIME sur RSS.

Pour voir une démonstration, publiez le script en tant qu'application Web et autorisez l'accès anonyme. Ajoutez l'URL du service à votre lecteur RSS ou accédez-y directement dans un navigateur Web.

Diffuser du JSON à partir de scripts

Utilisez le service Content pour diffuser du contenu JSON à d'autres scripts, sites Web et services. Le script suivant implémente un service qui vérifie si un créneau d'agenda est disponible à une heure spécifique.

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

Publiez-le en tant qu'application Web anonyme. Les utilisateurs peuvent ajouter des paramètres d'URL à la fin de l'URL du service. Les paramètres start et end spécifient une plage de temps dans l'époque Unix standard.

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

Le service renvoie un fichier JSON indiquant si l'agenda est ouvert pendant cette période.

{"available":true}

Diffuser JSONP dans les pages Web

En apportant une légère modification, votre service JSON peut devenir JSONP pour être appelé depuis JavaScript dans un navigateur.

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

Pour appeler ce service depuis un navigateur, créez une balise de script avec un attribut src défini sur l'URL du service et un paramètre prefix supplémentaire. Il s'agit du nom de la fonction dans votre code JavaScript côté client qui est appelée avec la valeur renvoyée par le service.

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

Cet exemple montre une boîte de message dans le navigateur avec la sortie du service, en utilisant la fonction alert intégrée du navigateur comme préfixe. Le code JavaScript renvoyé se présente comme suit :

alert({"available":true})

Soyez prudent lorsque vous utilisez JSONP. Comme n'importe qui peut intégrer la balise de script dans sa page Web, vous pouvez être amené à exécuter le script lorsque vous consultez un site Web malveillant, qui peut ensuite capturer les données renvoyées. Assurez-vous que les scripts JSONP sont en lecture seule et ne renvoient que des informations non sensibles.

Redirections

Pour des raisons de sécurité, le contenu renvoyé par le service de contenu est redirigé vers une URL à usage unique à l'adresse script.googleusercontent.com. Si vous utilisez le service de contenu pour renvoyer des données à une autre application, assurez-vous que le client HTTP est configuré pour suivre les redirections. Pour l'utilitaire de ligne de commande curl, ajoutez l'indicateur -L. Pour en savoir plus, consultez la documentation de votre client HTTP.