Saat skrip dipublikasikan sebagai aplikasi web, fungsi callback khusus
doGet()
dan doPost()
dipanggil setiap kali ada permintaan ke skrip
. Alih-alih menampilkan objek antarmuka pengguna yang dibuat dengan
layanan HTML,
Layanan konten dapat digunakan untuk menampilkan data mentah
konten tekstual. Ini memungkinkan Anda untuk menulis
skrip yang berfungsi sebagai “layanan”,
merespons permintaan GET
dan POST
serta menayangkan data berbagai jenis MIME.
Dasar-dasar
Berikut adalah contoh sederhana layanan Konten:
function doGet() {
return ContentService.createTextOutput('Hello, world!');
}
Men-deploy skrip sebagai aplikasi web,
menggunakan langkah yang sama seperti yang Anda lakukan
untuk menyajikan antarmuka pengguna. Kapan
permintaan GET
dibuat ke URL skrip, teks Hello, world!
akan menjadi
dikembalikan. Selain teks polos, layanan ini juga
mendukung pengembalian ATOM,
Konten CSV, iCal, JavaScript, JSON, RSS, vCard, dan XML.
Menyajikan feed RSS
Mari kita coba sesuatu yang sedikit lebih rumit seperti memfilter feed RSS. Tujuan Komik XKCD selalu lucu, tetapi Anda tidak bisa mendapatkannya lelucon, kecuali jika Anda mengarahkan kursor ke atas komik untuk melihat teks alternatif tambahan. Sayangnya, Anda tidak dapat mengarahkan kursor pada browser seluler, sehingga ini tidak berfungsi.
Katakanlah kita ingin mengedit feed agar ada komentar lebih lanjut di feed secara langsung, dan alih-alih melayang, Anda cukup men-scroll ke bawah sedikit untuk melihatnya. Bahwa akan bekerja dengan baik pada perangkat seluler. Berikut kodenya:
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);
}
Hal ini mungkin terlihat rumit, tetapi dapat dibagi menjadi beberapa bagian sederhana. Kita menggunakan Layanan Pengambilan URL untuk mengambil yang asli Feed RSS XKCD. Kemudian kita gunakan ekspresi reguler JavaScript standar untuk membuat substitusi yang kita butuhkan. Terakhir, kita gabungkan feed yang telah diedit dalam TextOutput dan menetapkan MIME ketik ke RSS.
Untuk melihat cara kerjanya, publikasikan skrip sebagai aplikasi web, pastikan untuk mengizinkan akses anonim (karena pembaca RSS Anda akan mengunjunginya sebagai pengguna anonim tertentu). Kemudian, tambahkan URL layanan (bukan feed RSS asli) ke RSS Anda pembaca atau langsung kunjungi di {i>browser <i}web. Selesai.
Menyajikan JSON dari skrip
Apa lagi yang dapat kami lakukan dengan layanan Konten? Bagaimana dengan menyajikan JSON ke skrip atau situs web dan layanan lainnya! Berikut adalah skrip sederhana yang mengimplementasikan layanan yang dapat digunakan oleh siapa saja untuk melihat apakah slot kalender terbuka pada baik.
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);
}
Seperti sebelumnya, publikasikan sebagai aplikasi web anonim agar dapat berfungsi. Dalam kasus ini,
pengguna layanan baru Anda dapat menggunakannya dengan menambahkan parameter URL di bagian akhir
URL layanan. Parameter start
dan end
memberikan rentang waktu untuk diperiksa,
yang ditentukan dalam standar Unix epoch.
curl -L URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000
Layanan akan mengembalikan JSON yang melaporkan apakah Anda memiliki sesuatu di kalender dalam rentang tersebut.
{"available":true}
Menyajikan JSONP di halaman web
Dengan sedikit perubahan, layanan JSON Anda bisa menjadi JSONP, yang berarti layanan ini dapat dipanggil dari JavaScript di browser. Berikut ini skrip barunya:
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);
}
Untuk memanggil layanan ini dari browser, buat tag skrip dengan atribut src
adalah URL layanan Anda, dengan parameter tambahan yang disebut prefix
. Ini
adalah nama fungsi di JavaScript sisi klien yang akan dipanggil
dengan nilai yang dikembalikan oleh layanan.
<script src="URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000&prefix=alert"></script>
Contoh ini akan menampilkan kotak pesan
di {i>browser<i} dengan {i>output<i} layanan,
karena kita menentukan fungsi alert()
bawaan browser sebagai awalan. Tujuan
Kode JavaScript yang ditampilkan akan terlihat seperti ini:
alert({"available":true})
Pengalihan
Untuk alasan keamanan, konten yang ditampilkan oleh layanan Konten tidak ditayangkan dari
script.google.com
, tetapi dialihkan ke URL sekali pakai di
script.googleusercontent.com
. Artinya, jika Anda menggunakan layanan Konten
untuk mengembalikan data ke aplikasi lain, Anda harus
memastikan bahwa klien HTTP
dikonfigurasikan untuk mengikuti pengalihan. Misalnya, di utilitas command line cURL,
tambahkan flag -L
. Periksa dokumentasi untuk klien HTTP Anda untuk informasi lebih lanjut
informasi tentang cara mengaktifkan perilaku ini.