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, 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 Fetch-Dienst, 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. JSONP-Scripts müssen schreibgeschützt sein und dürfen 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.