Layanan Konten

Saat skrip dipublikasikan sebagai aplikasi web, fungsi callback khusus doGet() dan doPost() dipanggil setiap kali permintaan dibuat untuk URL skrip. Alih-alih menampilkan objek antarmuka pengguna yang dibuat dengan layanan HTML, Layanan konten dapat digunakan untuk menampilkan konten tekstual mentah. Dengan begitu, Anda dapat menulis skrip yang bertindak sebagai "layanan", yang merespons permintaan GET dan POST serta menyajikan data dari berbagai jenis MIME.

Dasar-dasar

Berikut adalah contoh sederhana layanan Konten:

function doGet() {
  return ContentService.createTextOutput('Hello, world!');
}

Deploy skrip sebagai aplikasi web, menggunakan langkah yang sama seperti yang Anda lakukan jika menayangkan antarmuka pengguna. Saat permintaan GET dibuat ke URL skrip, teks Hello, world! akan ditampilkan. Selain teks biasa, layanan ini juga mendukung ditampilkannya konten ATOM, CSV, iCal, JavaScript, JSON, RSS, Braille, dan XML.

Menayangkan feed RSS

Mari kita coba sesuatu yang sedikit lebih rumit seperti memfilter feed RSS. Komik XKCD selalu lucu, tetapi Anda tidak bisa mendapatkan candaan lengkap kecuali jika Anda mengarahkan kursor ke strip komik untuk melihat teks alternatif tambahan. Sayangnya, Anda tidak dapat mengarahkan kursor ke browser seluler, jadi ini tidak berfungsi.

Misalnya Anda ingin mengedit feed agar punchline tambahan berada di feed secara langsung, dan tidak perlu mengarahkan kursor ke bawah, tetapi Anda cukup men-scroll sedikit ke bawah untuk melihatnya. Itu akan berfungsi dengan baik di 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);
}

Ini mungkin terlihat rumit, tetapi akan dibagi menjadi beberapa bagian sederhana. Kami menggunakan layanan Pengambilan URL untuk mengambil feed RSS XKCD asli. Selanjutnya, kita menggunakan ekspresi reguler JavaScript standar untuk membuat penggantian yang diperlukan. Terakhir, kami menggabungkan feed yang telah diedit dalam objek TextOutput dan menetapkan jenis MIME ke RSS.

Untuk melihatnya beraksi, publikasikan skrip sebagai aplikasi web, pastikan untuk mengizinkan akses anonim (karena pembaca RSS Anda akan mengunjunginya sebagai pengguna anonim). Kemudian, tambahkan URL layanan (bukan feed RSS asli) ke pembaca RSS Anda atau cukup kunjungi langsung di browser web. Selesai.

Menayangkan JSON dari skrip

Apa lagi yang dapat kita lakukan dengan layanan Konten? Bagaimana jika Anda membagikan JSON ke skrip atau situs atau layanan lain! Berikut adalah skrip sederhana yang mengimplementasikan layanan yang dapat digunakan siapa saja untuk melihat apakah slot kalender dibuka pada waktu tertentu.

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 aplikasi ini sebagai aplikasi web anonim agar dapat berfungsi. Dalam hal ini, pengguna layanan baru Anda dapat menggunakannya dengan menambahkan parameter URL di akhir URL layanan. Parameter start dan end memberikan rentang waktu untuk diperiksa, yang ditentukan dalam epoch Unix standar.

curl -L URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000

Layanan akan menampilkan JSON yang melaporkan apakah ada sesuatu di kalender Anda dalam rentang itu.

{"available":true}

Menayangkan JSONP di halaman web

Dengan sedikit perubahan, layanan JSON Anda dapat menjadi JSONP, yang berarti layanan tersebut dapat dipanggil dari JavaScript di browser. Berikut 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 yang atribut src-nya adalah URL layanan Anda, dengan parameter tambahan yang disebut prefix. Ini adalah nama fungsi di JavaScript sisi klien Anda yang akan dipanggil dengan nilai yang ditampilkan oleh layanan.

<script src="URL_OF_YOUR_SCRIPT?start=1325437200&end=1325439000&prefix=alert"></script>

Contoh ini akan menampilkan kotak pesan di browser dengan output layanan, karena kita menentukan fungsi alert() bawaan browser sebagai awalan kita. 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 satu kali di script.googleusercontent.com. Artinya, jika Anda menggunakan layanan Konten untuk menampilkan data ke aplikasi lain, Anda harus memastikan bahwa klien HTTP telah dikonfigurasi untuk mengikuti pengalihan. Misalnya, dalam utilitas command line cURL, tambahkan flag -L. Periksa dokumentasi untuk klien HTTP Anda guna mengetahui informasi selengkapnya tentang cara mengaktifkan perilaku ini.