Inhaltsservice

die rohen Textinhalt verschiedener MIME-Typen zurückgeben.

Wenn ein Skript als Web-App veröffentlicht wird, werden die Callback-Funktionen doGet und doPost immer dann ausgeführt, wenn eine Anfrage an die URL des Skripts gesendet wird. Anstatt ein mit dem HTML-Dienst erstelltes Benutzeroberflächenobjekt zurückzugeben, kann der Inhaltsdienst rohe Textinhalte zurückgeben. Sie können Skripts schreiben, die als Dienste fungieren und auf GET- und POST-Anfragen reagieren und Daten verschiedener MIME-Typen bereitstellen.

Grundlagen

Das folgende Beispiel zeigt, wie der Content-Dienst verwendet wird:

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

Stellen Sie das Script als Web-App bereit. Folgen Sie dazu derselben Anleitung wie beim Bereitstellen einer Benutzeroberfläche. Wenn eine GET-Anfrage an die URL des Skripts gesendet wird, wird der Text Hello, world! zurückgegeben. Neben Nur-Text unterstützt der Dienst auch die Rückgabe von ATOM-, CSV-, iCal-, JavaScript-, JSON-, RSS-, vCard- und XML-Inhalten.

RSS-Feeds bereitstellen

Sie können einen RSS-Feed filtern, um seinen Inhalt zu ändern. Sie können beispielsweise einen XKCD-Feed bearbeiten, um direkt im Feed Alt-Text für eine bessere mobile Ansicht einzufügen.

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

Der Code besteht aus den folgenden Komponenten. Verwenden Sie den URL-Abrufdienst, um den ursprünglichen XKCD-RSS-Feed abzurufen. Verwenden Sie einen standardmäßigen regulären JavaScript-Ausdruck, um die Ersetzungen vorzunehmen. Schließen Sie den bearbeiteten Feed in ein TextOutput-Objekt ein und legen Sie den MIME-Typ auf RSS fest.

Um das in Aktion zu sehen, veröffentlichen Sie das Skript als Web-App und erlauben Sie anonymen Zugriff. Fügen Sie die URL des Dienstes Ihrem RSS-Reader hinzu oder rufen Sie sie direkt in einem Webbrowser auf.

JSON über Skripts bereitstellen

Mit dem Content-Dienst können Sie JSON für andere Skripts, Websites und Dienste bereitstellen. Das folgende Skript implementiert einen Dienst, der prüft, ob ein Kalendertermin zu einem bestimmten Zeitpunkt verfügbar ist.

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

Veröffentlichen Sie dies als anonyme Web-App. Nutzer können URL-Parameter am Ende der Dienst-URL hinzufügen. Mit den Parametern start und end wird ein Zeitraum in der standardmäßigen Unix-Epoche angegeben.

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

Der Dienst gibt JSON zurück, das angibt, ob der Kalender in diesem Zeitraum geöffnet ist.

{"available":true}

JSONP auf Webseiten bereitstellen

Mit einer kleinen Änderung kann Ihr JSON-Dienst zu JSONP werden, das von JavaScript in einem Browser aufgerufen werden kann.

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

Wenn Sie diesen Dienst über einen Browser aufrufen möchten, erstellen Sie ein Script-Tag mit einem src-Attribut, das auf die Dienst-URL festgelegt ist, und einem zusätzlichen prefix-Parameter. Dies ist der Name der Funktion in Ihrem clientseitigen JavaScript, die mit dem vom Dienst zurückgegebenen Wert aufgerufen wird.

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

In diesem Beispiel wird ein Meldungsfeld im Browser mit der Dienstausgabe angezeigt. Als Präfix wird die integrierte alert-Funktion des Browsers verwendet. Der zurückgegebene JavaScript-Code sieht so aus:

alert({"available":true})

Seien Sie vorsichtig, wenn Sie JSONP verwenden. Da jeder das Script-Tag in seine Webseite einbetten kann, können Sie dazu verleitet werden, das Script auszuführen, wenn Sie eine schädliche Website besuchen. Dadurch können zurückgegebene Daten erfasst werden. Achten Sie darauf, dass JSONP-Scripts schreibgeschützt sind und nur nicht vertrauliche Informationen zurückgeben.

Weiterleitungen

Aus Sicherheitsgründen werden Inhalte, die vom Content-Dienst zurückgegeben werden, an eine Einmal-URL unter script.googleusercontent.com weitergeleitet. Wenn Sie den Content-Dienst verwenden, um Daten an eine andere Anwendung zurückzugeben, muss der HTTP-Client so konfiguriert sein, dass er Weiterleitungen folgt. Fügen Sie für das curl-Befehlszeilentool das Flag -L hinzu. Weitere Informationen finden Sie in der Dokumentation zu Ihrem HTTP-Client.