Dasar-Dasar Apps Script dengan Google Spreadsheet #5: Membuat Diagram dan Menyajikan Data di Slide

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:

  1. Makro dan Fungsi Kustom
  2. Spreadsheet, Sheet, dan Rentang
  3. Menangani data
  4. Pemformatan data

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:

  1. 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".
  2. 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:

45a3e8814ecb07fc.png

  1. 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:

9b9caf6c1e9de34b.png

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:

  1. Di editor Apps Script, tambahkan fungsi berikut di akhir skrip Code.gs project skrip Anda, setelah fungsi onOpen():
/**
 * 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);  
}
  1. 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:

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:

  1. Jika belum melakukannya, simpan project skrip Anda di editor Apps Script.
  2. Klik item menu Present dataset > Chart "Dates and USD Exchange Rates dataset".

Skrip Anda kini menempatkan diagram baru di sebelah kanan data Anda:

bbf856699b6d2b45.gif

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:

  1. Di editor Apps Script, tambahkan fungsi berikut di akhir skrip Code.gs project skrip Anda, setelah fungsi createEmbeddedLineChart():
/**
 * 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!"
  );
}
  1. 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:

db7e87dcb8010bef.gif

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():

  1. Jika belum melakukannya, simpan project skrip Anda di editor Apps Script.
  2. 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.
  3. Klik item menu Present dataset > Export charts to Slides. Anda mungkin diminta untuk memberikan otorisasi ulang pada skrip.
  4. Anda akan melihat skrip memproses permintaan dan menampilkan dialog kustom.
  5. Untuk membuka presentasi Slide baru, klik link Presentasi Kurs Dolar AS dan Tanggal:

51326ceaeb3e49b2.gif

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?

Ya Tidak

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:

Selamat membuat skrip!

Apakah playlist codelab ini bermanfaat bagi Anda?

Ya Tidak

Apakah Anda ingin melihat lebih banyak codelab Apps Script pada masa mendatang?

Ya Tidak