Service de contenu

qui renvoient du 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 comme des services, répondent aux requêtes GET et POST, et diffusent des données de différents types MIME.

Principes de base

L'exemple suivant montre comment utiliser le service Content :

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

Déployez le script en tant qu'application Web. Suivez les mêmes étapes 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 XKCD pour inclure du 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 TextOutput et définissez le type MIME sur RSS.

Pour voir cela en action, 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 JSON vers d'autres scripts, sites Web et services. Le script suivant implémente un service qui vérifie si un créneau de calendrier 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 le calendrier est disponible dans cette plage.

{"available":true}

Diffuser du JSONP dans des pages Web

Avec une légère modification, votre service JSON peut devenir JSONP pour être appelé à partir de 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 à partir d'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 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. Étant donné que n'importe qui peut intégrer la balise de script dans sa page Web, vous pouvez être amené à exécuter le script lorsque vous accédez à 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 Content est redirigé vers une URL à usage unique sur script.googleusercontent.com. Si vous utilisez le service Content 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'option -L. Pour en savoir plus, consultez la documentation de votre client HTTP.