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.