1. Pengantar
Selamat datang di bagian kelima playlist codelab Dasar-Dasar Apps Script dengan Google Spreadsheet. Codelab ini mengajarkan Anda cara menggunakan layanan Spreadsheet di Apps Script untuk membuat diagram set data. Anda juga akan mempelajari cara menggunakan layanan Slide untuk mengekspor diagram ke presentasi baru di Google Slide.
Yang akan Anda pelajari
- Cara membuat diagram garis dengan Apps Script.
- Cara mengekspor diagram ke presentasi Slide baru.
- Cara menampilkan dialog kepada pengguna di Spreadsheet.
Sebelum memulai
Ini adalah codelab kelima dalam playlist Dasar-Dasar Apps Script dengan Google Spreadsheet. Sebelum memulai codelab ini, pastikan untuk menyelesaikan codelab sebelumnya:
Yang Anda butuhkan
- Pemahaman tentang topik dasar Apps Script yang dibahas dalam codelab sebelumnya di playlist ini.
- Pemahaman dasar tentang editor Apps Script
- Pemahaman dasar tentang Google Spreadsheet
- Kemampuan untuk membaca Spreadsheet dengan Notasi A1
- Pemahaman dasar tentang JavaScript dan class
String
-nya
2. Siapkan
Sebelum melanjutkan, Anda memerlukan spreadsheet dengan beberapa data. Seperti sebelumnya, kami telah menyediakan lembar data yang dapat Anda salin untuk latihan ini. Lakukan langkah-langkah berikut:
- Klik link ini untuk menyalin lembar data, lalu klik Buat salinan. Spreadsheet baru akan ditempatkan di folder Google Drive Anda dan diberi nama "Salinan Tanggal dan Kurs USD".
- Klik judul spreadsheet dan ubah dari "Salinan Tanggal dan Kurs USD" menjadi "Tanggal dan Kurs USD". Spreadsheet Anda akan terlihat seperti ini, dengan beberapa informasi dasar tentang nilai tukar dolar AS yang berbeda pada tanggal yang berbeda:
- Untuk membuka editor skrip, klik Ekstensi> Apps Script.
Untuk menghemat waktu Anda, kami telah menyertakan sedikit kode untuk menyiapkan menu kustom di spreadsheet ini. Anda mungkin melihat menu muncul saat salinan spreadsheet Anda dibuka:
Dengan spreadsheet dan project ini, Anda siap memulai codelab. Lanjutkan ke bagian berikutnya untuk mulai mempelajari grafik dan pemicu berbasis waktu.
3. Membuat diagram di Spreadsheet dengan Apps Script
Misalkan Anda ingin mendesain diagram tertentu untuk memvisualisasikan set data. Anda sebenarnya dapat menggunakan Apps Script untuk membuat, mengedit, dan menyisipkan diagram ke Google Spreadsheet. Jika bagan berada dalam spreadsheet, bagan tersebut disebut bagan sematan.
Diagram digunakan untuk memvisualisasikan satu atau beberapa rangkaian data. Untuk diagram sematan, data yang ditampilkan biasanya berasal dari dalam spreadsheet. Biasanya, memperbarui data di spreadsheet akan menyebabkan Spreadsheet otomatis memperbarui diagram juga.
Anda dapat menggunakan Apps Script untuk membuat diagram sematan yang disesuaikan dari awal, atau untuk memperbarui diagram yang ada. Bagian ini memperkenalkan dasar-dasar pembuatan diagram sematan di Spreadsheet dengan Apps Script dan layanan Spreadsheet
.
Penerapan
Di salinan spreadsheet data Anda, set data "Tanggal dan Nilai Tukar" menampilkan nilai tukar (untuk 1 dolar AS) berbagai mata uang pada tanggal yang berbeda. Anda akan menerapkan fungsi Apps Script yang membuat diagram untuk memvisualisasikan sebagian data ini.
Lakukan langkah-langkah berikut:
- Di editor Apps Script, tambahkan fungsi berikut di akhir skrip
Code.gs
project skrip Anda, setelah fungsionOpen()
:
/**
* Creates and inserts an embedded
* line chart into the active sheet.
*/
function createEmbeddedLineChart() {
var sheet = SpreadsheetApp.getActiveSheet();
var chartDataRange = sheet.getRange(
'Dates and USD Exchange Rates dataset!A2:F102');
var hAxisOptions = {
slantedText: true,
slantedTextAngle: 60,
gridlines: {
count: 12
}
};
var lineChartBuilder = sheet.newChart().asLineChart();
var chart = lineChartBuilder
.addRange(chartDataRange)
.setPosition(5, 8, 0, 0)
.setTitle('USD Exchange rates')
.setNumHeaders(1)
.setLegendPosition(Charts.Position.RIGHT)
.setOption('hAxis', hAxisOptions)
.setOption("useFirstColumnAsDomain", true)
.build();
sheet.insertChart(chart);
}
- Simpan project skrip Anda.
Peninjauan kode
Kode yang telah Anda tambahkan mengimplementasikan fungsi yang dipanggil oleh item menu Chart "Dates and USD Exchange Rates dataset" untuk membuat diagram garis dasar. Mari kita tinjau kodenya.
Baris pertama menyiapkan tiga variabel berikut:
sheet
: referensi ke sheet aktif saat ini.chartDataRange
: rentang data yang ingin kita visualisasikan. Kode ini menggunakan notasi A1 untuk menentukan rentang yang mencakup sel A2 hingga F102 dalam sheet bernama Dates and USD Exchange Rates dataset. Dengan memberi nama sheet secara khusus, kita memastikan item menu berfungsi meskipun sheet lain aktif karena rentang selalu mencakup posisi data. Dimulai dari baris 2 berarti kita menyertakan header kolom dan hanya akan memetakan 100 tanggal (baris) terbaru.hAxisOptions
: objek JavaScript dasar yang menyertakan beberapa informasi setelan yang digunakan kode untuk mengonfigurasi tampilan sumbu horizontal. Secara khusus, kode ini menetapkan label teks sumbu horizontal pada kemiringan 60 derajat, dan menetapkan jumlah garis petak vertikal menjadi 12.
Baris berikutnya membuat objek pembuat diagram garis. Diagram sematan di Apps Script dibuat menggunakan pola desain Builder. Penjelasan lengkap tentang pola desain ini berada di luar cakupan codelab ini, jadi untuk saat ini cukup pahami bahwa layanan Spreadsheet
menyediakan beberapa class EmbeddedChartBuilder
. Untuk membuat diagram, kode Anda terlebih dahulu membuat objek pembuat diagram sematan, menggunakan metodenya untuk menentukan setelan diagram, lalu memanggil metode build()
untuk membuat objek EmbeddedChart
akhir. Kode Anda tidak pernah mengubah objek EmbeddedChart
secara langsung karena semua konfigurasi diagram dikelola melalui class builder.
Layanan Spreadsheet menyediakan class induk EmbeddedChartBuilder
dan beberapa class builder turunan (seperti EmbeddedLineChartBuilder
) yang mewarisi class induk tersebut. Class turunan memungkinkan Apps Script menyediakan metode konfigurasi diagram builder yang hanya berlaku untuk jenis diagram tertentu. Misalnya, class EmbeddedPieChartBuilder
menyediakan metode set3D()
yang hanya berlaku untuk diagram lingkaran.
Dalam kode Anda, baris ini membuat variabel objek builder lineChartBuilder
:
var lineChartBuilder = sheet.newChart().asLineChart();
Kode memanggil metode Sheet.newChart()
untuk membuat objek EmbeddedChartBuilder
, lalu menggunakan EmbeddedChartBuilder.asLineChart()
untuk menyetel jenis builder ke EmbeddedLineChartBuilder
.
Kemudian, kode akan membuat diagram menggunakan lineChartBuilder. Bagian kode ini hanyalah serangkaian panggilan metode untuk menentukan setelan diagram, diikuti dengan panggilan build()
untuk membuat diagram. Seperti yang telah Anda lihat di codelab sebelumnya, kode ini menggunakan penggabungan metode agar kode tetap mudah dibaca. Berikut fungsi panggilan metode:
addRange(range)
: Menentukan rentang data yang ditampilkan diagram.setPosition(anchorRowPos, anchorColPos, offsetX, offsetY)
: Menentukan tempat diagram ditempatkan dalam sheet. Di sini, kode menyisipkan sudut kiri atas diagram di sel H5.setTitle(title)
: Menetapkan judul diagram.setNumHeaders(headers)
: Tentukan jumlah baris atau kolom dalam rentang data yang harus diperlakukan sebagai header. Di sini, kode menggunakan baris pertama dalam rentang data sebagai header, yang berarti teks dalam baris tersebut digunakan sebagai label untuk setiap deret data dalam diagram.setLegendPosition(position)
: Memindahkan legenda diagram ke sisi kanan diagram. Metode ini menggunakan enum Charts.Position sebagai parameter.setOption(option, value)
: Menetapkan opsi diagram kompleks. Di sini, kode menetapkan opsihAxis
ke objekhAxisOptions
. Ada beberapa opsi yang dapat Anda tetapkan menggunakan metode ini. Opsi dan kemungkinan nilai untuk setiap jenis diagram didokumentasikan di Galeri Diagram Charts API. Misalnya, opsi yang dapat Anda tetapkan untuk diagram garis didokumentasikan di bagian Opsi konfigurasi diagram garis. MetodesetOption(option, value)
adalah topik lanjutan, jadi sebaiknya hindari penggunaannya hingga Anda lebih memahami pembuatan diagram di Apps Script.build()
: Membuat dan menampilkan objekEmbeddedChart
menggunakan setelan di atas.
Terakhir, kode memanggil Sheet.insertChart(chart)
untuk menempatkan diagram yang dibuat ke dalam sheet aktif.
Hasil
Anda dapat melihat fungsi pemformatan beroperasi dengan melakukan hal berikut:
- Jika belum melakukannya, simpan project skrip Anda di editor Apps Script.
- Klik item menu Present dataset > Chart "Dates and USD Exchange Rates dataset".
Skrip Anda kini menempatkan diagram baru di sebelah kanan data Anda:
Selamat, Anda telah membuat diagram garis sematan dengan Apps Script. Bagian berikutnya akan mengajarkan cara mengekspor diagram ke Google Slide.
4. Mengekspor diagram ke Slide
Salah satu keunggulan Apps Script adalah Anda dapat memindahkan data dengan mudah dari satu aplikasi Google Workspace ke aplikasi lainnya. Sebagian besar aplikasi ini memiliki layanan Apps Script khusus, mirip dengan layanan Spreadsheet. Misalnya, Gmail memiliki layanan Gmail, Google Dokumen memiliki layanan Dokumen, dan Google Slide memiliki layanan Slide. Dengan semua layanan bawaan ini, Anda dapat mengekstrak data dari satu aplikasi, memprosesnya, dan menulis hasilnya ke aplikasi lain.
Di bagian ini, Anda akan mempelajari cara mengekspor setiap diagram yang disematkan dalam spreadsheet Google ke presentasi Google Slide baru. Anda juga akan melihat dua cara untuk menampilkan pesan kustom pengguna di Spreadsheet.
Penerapan
Di sini, Anda akan menerapkan fungsi yang dipanggil oleh item menu Tampilkan set data > Ekspor diagram ke Slide. Lakukan langkah-langkah berikut:
- Di editor Apps Script, tambahkan fungsi berikut di akhir skrip
Code.gs
project skrip Anda, setelah fungsicreateEmbeddedLineChart()
:
/**
* Create a Slides presentation and export
* all the embedded charts in this spreadsheet
* to it, one chart per slide.
*/
function exportChartsToSlides() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
// Fetch a list of all embedded charts in this
// spreadsheet.
var charts = [];
var sheets = ss.getSheets();
for (var i = 0; i < sheets.length; i++) {
charts = charts.concat(sheets[i].getCharts());
}
// If there aren't any charts, display a toast
// message and return without doing anything
// else.
if (charts.length == 0) {
ss.toast('No charts to export!');
return;
}
// Create a Slides presentation, removing the default
// title slide.
var presentationTitle =
ss.getName() + " Presentation";
var slides = SlidesApp.create(presentationTitle);
slides.getSlides()[0].remove();
// Add charts to the presentation, one chart per slide.
var position = {left: 40, top: 30};
var size = {height: 340, width: 430};
for (var i = 0; i < charts.length; i++) {
var newSlide = slides.appendSlide();
newSlide.insertSheetsChart(
charts[i],
position.left,
position.top,
size.width,
size.height);
}
// Create and display a dialog telling the user where to
// find the new presentation.
var slidesUrl = slides.getUrl();
var html = "<p>Find it in your home Drive folder:</p>"
+ "<p><a href=\"" + slidesUrl + "\" target=\"_blank\">"
+ presentationTitle + "</a></p>";
SpreadsheetApp.getUi().showModalDialog(
HtmlService.createHtmlOutput(html)
.setHeight(120)
.setWidth(350),
"Created a presentation!"
);
}
- Simpan project skrip Anda.
Peninjauan kode
Kode ini mungkin lebih pendek dari yang Anda harapkan. Mari kita tinjau apa yang dilakukannya dengan memecah kode menjadi lima bagian:
1: Mendapatkan diagram
Beberapa baris pertama menelusuri spreadsheet aktif untuk menemukan semua diagram sematan, lalu mengumpulkannya ke dalam array charts
. Baris ini menggunakan metode Spreadsheet.getSheets()
dan metode Sheet.getCharts()
untuk mendapatkan daftar sheet dan diagram. Metode JavaScript Array.concat()
digunakan untuk menambahkan daftar diagram dari setiap sheet ke charts
.
2: Periksa apakah ada diagram yang akan diekspor
Kode ini memverifikasi apakah ada diagram yang akan diekspor. Kita ingin menghindari pembuatan presentasi kosong, jadi jika tidak ada diagram, kode akan membuat pesan toast menggunakan Spreadsheet.toast(message)
. Ini adalah dialog ‘intip' kecil yang muncul di sudut kanan bawah Spreadsheet, tetap ada selama beberapa detik, lalu menghilang:
Jika tidak ada diagram yang akan diekspor, kode akan membuat pesan toast dan keluar tanpa melakukan hal lain. Jika ada diagram yang akan diekspor, kode akan terus membuat presentasi dalam beberapa baris berikutnya.
3: Membuat presentasi
Variabel presentationTitle
dibuat untuk menyimpan nama file presentasi baru. Nama ini ditetapkan sebagai nama spreadsheet, dengan " Presentation
" yang digabungkan di bagian akhir. Kode kemudian memanggil metode layanan Slide SlidesApp.create(name)
untuk membuat presentasi.
Presentasi baru dibuat dengan satu slide kosong. Kita tidak menginginkannya dalam presentasi, jadi kode akan menghapusnya dengan Presentation.getSlides()
dan Slide.remove()
.
4: Mengekspor diagram
Di bagian berikutnya, kode menentukan position
dan size
objek JavaScript untuk menetapkan tempat penempatan diagram yang diimpor dalam slide dan seberapa besar diagram tersebut (dalam piksel).
Kode ini melakukan loop pada setiap diagram dalam daftar diagram. Untuk setiap diagram, newSlide
dibuat dengan Presentation.appendSlide()
, yang menambahkan slide ke akhir presentasi. Metode Slide.insertSheetsChart(sourceChart, left, top, width, height)
digunakan untuk mengimpor diagram ke dalam slide dengan position
dan size
yang ditentukan.
5: Bagikan lokasi presentasi
Terakhir, kode harus memberi tahu pengguna lokasi presentasi baru, sebaiknya dengan link yang dapat diklik untuk membukanya. Untuk melakukannya, kode menggunakan HTML
service Apps Script untuk membuat dialog modal kustom. Dialog modal (juga dikenal sebagai dialog kustom di Apps Script) adalah jendela yang muncul di atas antarmuka Spreadsheet. Saat ditampilkan, dialog kustom mencegah pengguna berinteraksi dengan Spreadsheet.
Untuk membuat dialog kustom, kode memerlukan HTML yang menentukan isinya. Ini disediakan dalam variabel html
. Isinya mencakup paragraf singkat dan hyperlink. Hyperlink adalah variabel presentationTitle
, yang ditautkan ke URL presentasi yang disediakan oleh Presentation.getUrl()
. Hyperlink juga menggunakan atribut target="_blank"
sehingga presentasi dibuka di tab browser baru, bukan di dalam dialog.
HTML diuraikan menjadi objek HtmlOutput
oleh metode HtmlService.createHtmlOutput(html)
. Objek HtmlOutput
memungkinkan kode menetapkan ukuran dialog kustom dengan HtmlOutput.setHeight(height)
dan HtmlOutput.setWidth(width)
.
Setelah htmlOutput
dibuat, kode menggunakan metode Ui.showModalDialog(htmlOutput, title)
untuk menampilkan dialog dengan judul yang diberikan.
Hasil
Setelah menerapkan item menu kedua, Anda dapat melihat cara kerjanya. Untuk menguji fungsi exportChartsToSlides()
:
- Jika belum melakukannya, simpan project skrip Anda di editor Apps Script.
- Buka spreadsheet Anda dan klik item menu Tampilkan set data > Diagram "Set data Kurs USD dan Tanggal" untuk membuat diagram yang akan diekspor. Diagram akan muncul dan ditambatkan ke sel H5 di sheet aktif.
- Klik item menu Present dataset > Export charts to Slides. Anda mungkin diminta untuk memberikan otorisasi ulang pada skrip.
- Anda akan melihat skrip memproses permintaan dan menampilkan dialog kustom.
- Untuk membuka presentasi Slide baru, klik link Presentasi Kurs Dolar AS dan Tanggal:
Jika mau, Anda juga dapat menambahkan lebih banyak diagram ke spreadsheet dan memilih kembali item menu untuk membuat presentasi dengan beberapa slide.
Sekarang Anda dapat mengekspor diagram yang dibuat di Spreadsheet ke presentasi Slide. Anda juga dapat menulis kode untuk membuat dialog kustom.
Anda telah menyelesaikan latihan terakhir codelab ini. Lanjutkan ke bagian berikutnya untuk meninjau hal yang telah Anda pelajari.
5. Kesimpulan
Selamat, Anda telah menyelesaikan codelab ini dan seluruh playlist codelab Dasar-Dasar Apps Script dengan Google Spreadsheet. Anda dapat menggunakan prinsip-prinsip yang diajarkan dalam playlist ini untuk memperluas pengalaman Spreadsheet dan menjelajahi kemampuan Apps Script.
Apakah codelab ini bermanfaat bagi Anda?
Yang telah Anda pelajari
- Cara membuat diagram garis sematan dengan Apps Script.
- Cara menampilkan pesan toast dan dialog kustom kepada pengguna di Spreadsheet.
- Cara mengekspor diagram ke presentasi Slide baru.
Langkah berikutnya
Anda telah berhasil menyelesaikan playlist ini. Namun, masih banyak yang perlu dipelajari tentang Apps Script.
Lihat referensi berikut:
- Dokumentasi Developer Apps Script
- Panduan Apps Script
- Dokumentasi Referensi Apps Script
- Pertanyaan Apps Script di StackOverflow
- Contoh kode Apps Script di GitHub
Selamat membuat skrip!