Layanan Konten

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.