Wenn ein Skript als Web-App veröffentlicht wird, werden die speziellen Callback-Funktionen
doGet()
und doPost()
werden aufgerufen, wenn eine Anfrage an die
URL Anstatt ein Benutzeroberflächenobjekt zurückzugeben, das mit der Methode
HTML-Dienst, der
Mit dem Inhaltsdienst können Rohdaten zurückgegeben werden.
Textinhalte. Damit können Sie Skripts schreiben,
die als „Dienste“ fungieren,
auf GET
- und POST
-Anfragen antworten und Daten mit verschiedenen MIME-Typen bereitstellen
Grundlagen
Hier ist ein einfaches Beispiel für den Content-Dienst:
function doGet() {
return ContentService.createTextOutput('Hello, world!');
}
Stellen Sie das Skript als Webanwendung bereit.
mit denselben Schritten wie bei einer Benutzeroberfläche. Wann?
eine GET
-Anfrage an die URL des Skripts gesendet wird, wird der Text Hello, world!
zurückgegeben. Neben reinem Text unterstützt der Dienst auch die Rückgabe von ATOM,
CSV-, iCal-, JavaScript-, JSON-, RSS-, vCard- und XML-Inhalte
RSS-Feeds bereitstellen
Versuchen wir es mit etwas Kompliziertem, z. B. dem Filtern eines RSS-Feeds. Die XKCD-Comics sind immer witzig, aber man kann nicht das ganze Lied bekommen es sei denn, Sie bewegen den Mauszeiger über den Comic-Strip, um den zusätzlichen Alt-Text zu sehen. Das Bewegen der Maus über einen mobilen Browser ist nicht möglich, daher funktioniert dies nicht.
Angenommen, wir möchten den Feed so bearbeiten, dass sich die zusätzliche Pointline im Feed befindet. direkt angezeigt. Statt den Mauszeiger darüber zu bewegen, haben Sie einfach ein wenig nach unten gescrollt, um es zu sehen. Das auf einem Mobilgerät problemlos funktionieren. Hier ist der Code:
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);
}
Das mag kompliziert erscheinen, aber es besteht aus einfachen Teilen. Wir verwenden die URL-Abrufdienst zum Abrufen des Originals XKCD-RSS-Feed Dann verwenden wir einen regulären regulären JavaScript-Ausdruck, Substitutionen, die wir brauchen. Schließlich verpacken wir den bearbeiteten Feed TextOutput-Objekt und legen Sie das MIME- in RSS ein.
Veröffentlichen Sie das Skript als Web-App, um dies in Aktion zu sehen. anonymer Zugriff (da Ihr RSS-Reader die Website Nutzer). Füge dann die URL des Dienstes (nicht den ursprünglichen RSS-Feed) zu deinem RSS-Feed hinzu. oder direkt in einem Webbrowser aufrufen. Fertig!
JSON aus Skripts bereitstellen
Was können wir sonst noch mit dem Inhaltsdienst tun? wie Sie JSON-Daten für andere Skripte oder andere Websites und Dienste! Hier ist ein einfaches Skript, mit dem ein mit dem jeder sehen kann, ob ein Zeitblock an einem bestimmten .
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 die Datei wie zuvor als anonyme Webanwendung, damit sie funktioniert. In diesem Fall
Nutzer Ihres neuen Dienstes diesen nutzen können, indem sie URL-Parameter am Ende des
Service-URL. Die Parameter start
und end
geben einen zu prüfenden Zeitraum an.
die in der Unix-Standardzeit
angegeben wurden.
curl -L URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000
Der Dienst gibt JSON-Dateien zurück, die angeben, ob in Ihrem Kalender in diesem Bereich.
{"available":true}
JSONP auf Webseiten bereitstellen
Mit einer geringfügigen Änderung kann Ihr JSON-Dienst JSONP, was bedeutet, dass er aufgerufen werden kann, über JavaScript in einem Browser. Hier ist das neue Skript:
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);
}
Um diesen Dienst in einem Browser aufzurufen, erstellen Sie ein Skript-Tag, dessen Attribut src
ist die URL Ihres Dienstes mit dem zusätzlichen Parameter prefix
. Dieses
ist der Name der Funktion in Ihrem clientseitigen JavaScript, die aufgerufen wird
durch den vom Dienst zurückgegebenen Wert.
<script src="URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000&prefix=alert"></script>
In diesem Beispiel wird im Browser ein Meldungsfeld mit der Dienstausgabe angezeigt.
da wir die integrierte alert()
-Funktion des Browsers als Präfix angeben. Die
Der zurückgegebene JavaScript-Code sieht so aus:
alert({"available":true})
Weiterleitungen
Aus Sicherheitsgründen werden vom Inhaltsdienst zurückgegebene Inhalte nicht von
script.google.com
, sondern wird stattdessen zu einer einmaligen URL unter
script.googleusercontent.com
. Wenn Sie den Inhaltsdienst
wenn Sie Daten an eine andere Anwendung zurückgeben möchten, müssen Sie sicherstellen, dass der HTTP-Client
Weiterleitungen folgen. Im cURL-Befehlszeilendienstprogramm
Fügen Sie das Flag -L
hinzu. Weitere Informationen finden Sie in der Dokumentation Ihres HTTP-Clients.
wie Sie dieses Verhalten aktivieren können.