Gdy skrypt jest publikowany jako aplikacja internetowa, specjalne funkcje wywołania zwrotnego
Funkcje doGet()
i doPost()
są wywoływane po każdorazowym wysłaniu żądania do skryptu
Adres URL. Zamiast zwracać obiekt interfejsu utworzony za pomocą
usługa HTML,
Usługa treści może służyć do zwracania nieprzetworzonych danych
treści tekstowe. Dzięki temu możesz pisać skrypty działające jako „usługi”,
odpowiada na żądania GET
i POST
oraz wyświetla dane różnych typów MIME.
Podstawy
Oto prosty przykład usługi treści:
function doGet() {
return ContentService.createTextOutput('Hello, world!');
}
Wdróż skrypt jako aplikację internetową,
wykonując te same czynności, co w przypadku korzystania z interfejsu. Kiedy
wysłane żądanie GET
do adresu URL skryptu, tekst Hello, world!
zostanie
. Oprócz zwykłego tekstu usługa obsługuje również zwracanie wartości ATOM,
Zawartość CSV, iCal, JavaScript, JSON, RSS, vCard i XML.
Udostępnianie kanałów RSS
Spróbujmy czegoś bardziej skomplikowanego, na przykład filtrowania kanału RSS. Komiksy XKCD są zawsze zabawne, ale nie da się ich w pełni to tylko żart, chyba że najedziesz kursorem na komiks, aby zobaczyć dodatkowy tekst alternatywny. Nie można najechać kursorem na przeglądarkę mobilną, więc ta funkcja nie działa.
Załóżmy, że chcemy wprowadzić zmiany w pliku danych, aby dodać do niego dodatkowy przedział czasu. bezpośrednio, a zamiast najechać kursorem, przewiń stronę w dół, aby ją zobaczyć. Ten na urządzeniach mobilnych. Oto kod:
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);
}
Może się to wydawać skomplikowane, ale dzieli się na proste elementy. Wykorzystujemy Usługa pobierania adresów URL, aby pobrać oryginał. Kanał RSS XKCD. Następnie używamy standardowego wyrażenia regularnego JavaScriptu, by utworzyć zamienniki, których potrzebujemy. Na koniec umieszczamy edytowany plik danych obiektu TextOutput i ustawić MIME. z kanału RSS.
Aby zobaczyć, jak to działa, opublikuj skrypt jako aplikację internetową, zezwalając na dostęp anonimowy (ponieważ czytnik RSS będzie odwiedzać go jako anonimowy użytkownik, użytkownika). Następnie dodaj adres URL usługi (nie pierwotnego kanału RSS) do kanału RSS. lub po prostu otworzyć go bezpośrednio w przeglądarce. Znakomicie.
Udostępnianie kodu JSON ze skryptów
Co jeszcze można zrobić w usłudze Treści? A co z udostępnianiem kodu JSON innym skrypty lub inne witryny bądź usługi! Oto prosty skrypt, który implementuje usługa, za pomocą której każdy może sprawdzić, czy dany termin w kalendarzu jest wolny obecnie się znajdujesz.
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);
}
Tak jak dotychczas, opublikuj tę aplikację jako anonimową aplikację internetową, aby zacząć działać. W tym przypadku
użytkownicy nowej usługi mogą z niej korzystać, dodając parametry adresu URL na końcu parametru
adresu URL usługi. Parametry start
i end
określają zakres czasowy, w którym należy sprawdzić,
określone w standardowej epoce uniksowej.
curl -L URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000
Usługa zwróci kod JSON z informacją, czy masz coś w kalendarza w danym zakresie.
{"available":true}
Obsługiwanie JSONP na stronach internetowych
Po niewielkiej zmianie Twoja usługa JSON może stać się JSONP, co oznacza, że można go nazwać JavaScript w przeglądarce. Oto nowy skrypt:
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);
}
Aby wywołać tę usługę w przeglądarce, utwórz tag skryptu, którego atrybut src
to adres URL Twojej usługi z dodatkowym parametrem o nazwie prefix
. Ten
to nazwa funkcji w JavaScripcie po stronie klienta, która zostanie wywołana
wartością zwracaną przez usługę.
<script src="URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000&prefix=alert"></script>
W tym przykładzie wyświetli się w przeglądarce pole komunikatu z danymi wyjściowymi usługi.
, bo jako prefiks określamy wbudowaną funkcję alert()
przeglądarki.
Zwrócony kod JavaScript będzie wyglądać następująco:
alert({"available":true})
Przekierowania
Ze względów bezpieczeństwa treści zwracane przez usługę treści nie są udostępniane z
script.google.com
, ale nastąpiło przekierowanie do jednorazowego adresu URL na stronie
script.googleusercontent.com
Oznacza to, że jeśli korzystasz z usługi treści
, aby zwrócić dane do innej aplikacji, upewnij się, że klient HTTP
skonfigurowane pod kątem śledzenia przekierowań. Na przykład w narzędziu wiersza poleceń cURL
dodaj flagę -L
. Więcej informacji znajdziesz w dokumentacji klienta HTTP
jak włączyć tę funkcję.