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

1. Pengantar

Selamat datang di bagian kelima dari playlist codelab Dasar-dasar Apps Script dengan Google Spreadsheet. Codelab ini mengajarkan 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 mempresentasikan dialog kepada pengguna di Spreadsheet.

Sebelum memulai

Ini adalah codelab kelima dalam playlist Fundamentals of Apps Script dengan Google Spreadsheet. Sebelum memulai codelab ini, pastikan untuk menyelesaikan codelab sebelumnya:

  1. Makro dan Fungsi Kustom
  2. Spreadsheet, Spreadsheet, dan Rentang
  3. Bekerja dengan data
  4. Format data

Yang Anda butuhkan

  • Pemahaman tentang topik Apps Script dasar yang dijelaskan dalam codelab sebelumnya di playlist ini.
  • Pemahaman dasar tentang editor Apps Script
  • Pemahaman dasar tentang Google Spreadsheet
  • Kemampuan untuk membaca Notasi A1 Spreadsheet
  • Pemahaman dasar tentang JavaScript dan class String

2. Siapkan

Sebelum melanjutkan, Anda memerlukan spreadsheet yang berisi beberapa data. Seperti sebelumnya, kami telah menyediakan lembar data yang dapat Anda salin untuk latihan ini. Lakukan langkah berikut:

  1. Klik link ini untuk menyalin sheet data, lalu klik Buat salinan. Spreadsheet baru akan ditempatkan di folder Google Drive dan diberi nama "Salinan Tanggal dan Nilai Tukar USD".
  2. Klik judul spreadsheet dan ubah dari "Salinan Tanggal dan Nilai Tukar USD" menjadi "Tanggal dan Nilai Tukar USD". Sheet 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 dibuka:

9b9caf6c1e9de34b.png

Dengan spreadsheet dan project ini, Anda siap untuk memulai codelab. Pindah 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 terdapat dalam spreadsheet, diagram ini disebut diagram sematan.

Diagram digunakan untuk memvisualisasikan satu atau beberapa rangkaian data. Untuk diagram sematan, data yang disajikan biasanya berasal dari dalam spreadsheet. Biasanya, memperbarui data di spreadsheet menyebabkan Spreadsheet juga mengupdate diagram secara otomatis.

Anda dapat menggunakan Apps Script untuk membuat diagram sematan kustom dari awal, atau memperbarui diagram yang ada. Bagian ini memperkenalkan dasar-dasar pembuatan diagram tersemat di Spreadsheet dengan Apps Script dan layanan Spreadsheet.

Implementasi

Dalam salinan spreadsheet data, set data "Tanggal dan Nilai Tukar" menunjukkan kurs (untuk 1 dolar AS) mata uang yang berbeda pada tanggal yang berbeda. Anda akan menerapkan fungsi Apps Script yang membuat diagram untuk memvisualisasikan bagian dari data ini.

Lakukan langkah berikut:

  1. Di editor Apps Script, tambahkan fungsi berikut ke bagian 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 Anda tambahkan menerapkan fungsi yang dipanggil oleh item menu Diagram "Tanggal dan Kurs Tukar USD USD" 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 tersebut menggunakan notasi A1 untuk menentukan rentang mencakup sel A2 hingga F102 di sheet bernama Set data Tanggal dan Nilai Tukar USD. Dengan menamai sheet secara khusus, kami memastikan item menu berfungsi meskipun sheet yang berbeda aktif karena rentang selalu mencakup posisi data. Mulai dari baris 2, kami menyertakan header kolom dan kami hanya akan memetakan 100 tanggal terbaru (baris).
  • hAxisOptions: objek JavaScript dasar yang menyertakan beberapa informasi setelan yang digunakan kode untuk mengonfigurasi tampilan sumbu horizontal. Secara khusus, mereka menetapkan label teks sumbu horizontal dengan kemiringan 60 derajat, dan menyetel jumlah garis kisi vertikal menjadi 12.

Baris berikutnya membuat objek builder diagram garis. Diagram tersemat dalam 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 builder diagram tersemat, menggunakan metodenya untuk menentukan setelan diagram, lalu memanggil metode build() untuk membuat objek EmbeddedChart akhir. Kode Anda tidak pernah memodifikasi objek EmbeddedChart secara langsung karena semua konfigurasi diagram dikelola melalui class builder.

Layanan Spreadsheet menyediakan class EmbeddedChartBuilder induk dan beberapa class builder turunan (seperti EmbeddedLineChartBuilder) yang mewarisi darinya. 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 ini memanggil metode Sheet.newChart() untuk membuat objek EmbeddedChartBuilder, lalu menggunakan EmbeddedChartBuilder.asLineChart() untuk menetapkan jenis builder ke EmbeddedLineChartBuilder.

Kode kemudian membuat diagram menggunakan lineChartBuilder. Bagian kode ini hanyalah serangkaian panggilan metode untuk menentukan setelan diagram, diikuti dengan panggilan build() untuk membuat diagram. Seperti yang Anda lihat dalam codelab sebelumnya, kode menggunakan rantai metode untuk menjaga kode tetap dapat dibaca manusia. Berikut yang dilakukan oleh panggilan metode:

Terakhir, kode memanggil Sheet.insertChart(chart) untuk menempatkan diagram yang dibuat ke sheet yang aktif.

Hasil

Anda dapat melihat cara kerja fungsi format dengan melakukan hal berikut:

  1. Jika belum, simpan project skrip Anda di editor Apps Script.
  2. Klik item menu Presentasikan set data > Diagram "Tanggal dan set data Nilai Tukar USD".

Skrip Anda sekarang menempatkan diagram baru di sebelah kanan data:

bbf856699b6d2b45.gif

Selamat, Anda telah membuat diagram garis tersemat dengan Apps Script. Bagian berikutnya mengajarkan cara mengekspor diagram ke Google Slide.

4. Mengekspor diagram ke Slide

Salah satu keunggulan hebat Apps Script adalah memungkinkan Anda memindahkan data dari satu aplikasi Google Workspace ke aplikasi lainnya dengan mudah. 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.

Pada bagian ini, Anda akan mempelajari cara mengekspor setiap diagram yang disematkan di spreadsheet Google ke presentasi Google Slide baru. Anda juga akan melihat dua cara untuk menampilkan pesan kustom pengguna di Spreadsheet.

Implementasi

Di sini Anda akan menerapkan fungsi yang dipanggil oleh item menu Presentasikan set data > Ekspor diagram ke Slide. Lakukan langkah berikut:

  1. Di editor Apps Script, tambahkan fungsi berikut ke bagian 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 yang disematkan, yang mengumpulkannya ke dalam array charts. Baris ini menggunakan metode Spreadsheet.getSheets() dan metode Sheet.getCharts() untuk mendapatkan daftar sheet dan diagram. Metode Array.concat() JavaScript digunakan untuk menambahkan daftar diagram dari setiap sheet ke charts.

2: Memeriksa bahwa ada diagram yang akan diekspor

Kode tersebut memverifikasi apakah ada diagram yang akan diekspor. Kita ingin menghindari membuat presentasi kosong, jadi jika tidak ada diagram, kode akan membuat pesan toast menggunakan Spreadsheet.toast(message). Ini adalah dialog ‘peek' kecil yang muncul di pojok kanan bawah Spreadsheet, tetap selama beberapa detik, lalu menghilang:

db7e87dcb8010bef.gif

Jika tidak ada diagram yang dapat diekspor, kode akan membuat pesan toast dan keluar tanpa melakukan apa pun. Jika ada diagram yang akan diekspor, kode terus membuat presentasi di beberapa baris berikutnya.

3: Membuat presentasi

Variabel presentationTitle dibuat untuk menyimpan nama file presentasi baru. Namanya disetel sebagai nama spreadsheet, dengan " Presentation&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, sehingga kode menghapusnya dengan Presentation.getSlides() dan Slide.remove().

4: Mengekspor diagram

Di bagian berikutnya, kode menentukan position dan size objek JavaScript untuk menetapkan tempat diagram yang diimpor ditempatkan di slide dan seberapa besar diagram (dalam piksel).

Kode akan 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: Membagikan lokasi presentasi

Terakhir, kode harus memberi tahu pengguna di mana presentasi baru berada, dan sebaiknya dengan link yang dapat diklik untuk membukanya. Untuk melakukannya, kode menggunakan HTML layanan Apps Script untuk membuat dialog modal khusus. 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 mendefinisikan kontennya. Ini tersedia di variabel html. Konten ini mencakup paragraf pendek 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 dengan 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 mengimplementasikan item menu kedua, Anda dapat melihat cara kerjanya. Untuk menguji fungsi exportChartsToSlides():

  1. Jika belum, simpan project skrip Anda di editor Apps Script.
  2. Buka spreadsheet dan klik item menu Presentasikan set data > Diagram "Tanggal dan set data Nilai Tukar USD" untuk membuat diagram yang akan diekspor. Ini akan muncul ditambatkan ke sel H5 di sheet aktif.
  3. Klik item menu Presentasikan set data > Ekspor diagram ke Slide. Anda mungkin diminta untuk mengotorisasi ulang skrip.
  4. Anda akan melihat skrip memproses permintaan tersebut dan menampilkan dialog kustom.
  5. Untuk membuka presentasi Slide baru, klik link Presentasi Nilai Tukar Tanggal dan USD:

51326ceaeb3e49b2.gif

Jika diinginkan, Anda juga dapat menambahkan diagram lainnya ke spreadsheet dan memilih ulang item menu untuk membuat presentasi dengan beberapa slide.

Sekarang Anda dapat mengekspor diagram yang dibuat di Spreadsheet ke dalam presentasi Slide. Anda juga dapat menulis kode untuk membuat dialog kustom.

Anda telah menyelesaikan latihan terakhir codelab ini. Lanjutkan ke bagian berikutnya untuk meninjau materi yang telah Anda pelajari.

5. Kesimpulan

Selamat, kini Anda telah menyelesaikan codelab ini dan seluruh playlist codelab Dasar-Dasar Aplikasi Apps 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 mempresentasikan pesan toast dan dialog kustom kepada pengguna di Spreadsheet.
  • Cara mengekspor diagram ke presentasi Slide baru.

Apa selanjutnya

Anda berhasil menyelesaikan playlist ini. Namun, masih ada lagi yang dapat dipelajari tentang Apps Script.

Lihat referensi berikut:

Selamat Membuat Skrip!

Apakah playlist codelab ini bermanfaat bagi Anda?

Ya Tidak

Apakah Anda ingin melihat codelab Apps Script lainnya di masa mendatang?

Ya Tidak