Dasar-Dasar Apps Script dengan Google Spreadsheet #2: Spreadsheet, Sheet, dan Rentang

1. Pengantar

Selamat datang di bagian kedua playlist codelab Dasar-Dasar Apps Script dengan Google Spreadsheet. Codelab sebelumnya berfokus pada konsep editor skrip, makro, dan fungsi kustom. Codelab ini membahas layanan Spreadsheet yang dapat Anda gunakan untuk membaca, menulis, dan memanipulasi data di Google Spreadsheet.

Yang akan Anda pelajari

  • Cara spreadsheet, sheet, dan rentang direpresentasikan di Apps Script.
  • Cara mengakses, membuat, dan mengganti nama spreadsheet aktif (terbuka) dengan class SpreadsheetApp dan Spreadsheet.
  • Cara mengubah nama sheet dan orientasi kolom/baris rentang, menggunakan class Sheet.
  • Cara menentukan, mengaktifkan, memindahkan, dan mengurutkan sekelompok sel atau rentang data menggunakan class Range.

Sebelum memulai

Ini adalah codelab kedua dalam playlist Dasar-Dasar Apps Script dengan Google Spreadsheet. Sebelum memulai, pastikan Anda telah menyelesaikan codelab pertama: Makro dan Fungsi Kustom.

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

Bagian berikutnya memperkenalkan class inti layanan Spreadsheet.

2. Pengantar layanan Spreadsheet

Empat class mencakup dasar layanan Spreadsheet: SpreadsheetApp, Spreadsheet, Sheet, dan Range. Bagian ini menjelaskan class tersebut dan kegunaannya.

Class SpreadsheetApp

Sebelum mempelajari spreadsheet, sheet, dan rentang, Anda harus meninjau class induknya: SpreadsheetApp. Banyak skrip dimulai dengan memanggil metode SpreadsheetApp, karena metode ini dapat memberikan titik akses awal ke file Google Spreadsheet Anda. Anda dapat menganggap SpreadsheetApp sebagai class utama Spreadsheet service. Class SpreadsheetApp tidak dibahas secara mendalam di sini. Namun, nanti dalam codelab ini, Anda dapat menemukan contoh dan latihan untuk membantu Anda memahami class ini.

Spreadsheet, sheet, dan kelasnya

Sebagai istilah Spreadsheet, spreadsheet adalah file Google Spreadsheet (disimpan di Google Drive) yang berisi data yang disusun menurut baris dan kolom. Spreadsheet terkadang disebut sebagai 'Google Spreadsheet', seperti halnya dokumen disebut sebagai 'Google Dokumen'.

Anda dapat menggunakan class Spreadsheet untuk mengakses dan mengubah data file Google Spreadsheet. Anda juga dapat menggunakan class ini untuk operasi tingkat file lainnya, seperti menambahkan kolaborator.

f00cc1a9eb606f77.png

Sheet** mewakili setiap halaman spreadsheet, yang terkadang disebut sebagai "tab". Setiap spreadsheet dapat berisi satu atau beberapa sheet. Anda dapat menggunakan class Sheet** untuk mengakses dan mengubah data serta setelan tingkat sheet, seperti memindahkan baris atau kolom data.

39dbb10f83e3082.png

Singkatnya, class Spreadsheet beroperasi pada kumpulan sheet dan menentukan file Google Spreadsheet di Google Drive. Class Sheet beroperasi pada setiap sheet dalam spreadsheet.

Class Range

Sebagian besar operasi manipulasi data (misalnya, membaca, menulis, atau memformat data sel) mengharuskan Anda menentukan sel yang akan diterapkan operasi. Anda dapat menggunakan class Range untuk memilih kumpulan sel tertentu dalam sheet. Instance class ini merepresentasikan rentang—grup yang terdiri dari satu atau beberapa sel yang berdekatan dalam sheet. Anda dapat menentukan rentang berdasarkan nomor baris dan kolomnya, atau menggunakan notasi A1.

Bagian codelab lainnya menunjukkan contoh skrip yang berfungsi dengan class dan metodenya.

3. Siapkan

Sebelum melanjutkan, Anda memerlukan spreadsheet dengan beberapa data. Kami telah menyediakannya untuk Anda: klik link ini untuk menyalin lembar data, lalu klik Buat salinan.

5376f721894b10d9.png

Salinan spreadsheet contoh untuk Anda gunakan ditempatkan di folder Google Drive Anda dan diberi nama "Salinan Spreadsheet tanpa judul". Gunakan spreadsheet ini untuk menyelesaikan latihan codelab ini.

Sebagai pengingat, Anda dapat membuka editor skrip dari Google Spreadsheet dengan mengklik Ekstensi > Apps Script.

Saat membuka project Apps Script di editor skrip untuk pertama kalinya, editor skrip akan membuat project skrip dan file skrip untuk Anda.

Bagian berikutnya menunjukkan cara menggunakan class Spreadsheet untuk meningkatkan kualitas spreadsheet ini.

4. Mengakses dan mengubah spreadsheet

Di bagian ini, Anda dapat mempelajari cara menggunakan class SpreadsheetApp dan Spreadsheet untuk mengakses dan mengubah spreadsheet. Secara khusus, latihan ini mengajarkan cara mengganti nama spreadsheet dan menduplikasi sheet dalam spreadsheet.

Ini adalah operasi sederhana, tetapi sering kali merupakan bagian dari alur kerja yang lebih besar dan lebih kompleks. Setelah Anda memahami cara mengotomatiskan tugas ini dengan kode skrip, akan lebih mudah untuk mempelajari cara mengotomatiskan operasi yang lebih rumit.

Mengganti nama spreadsheet aktif

Misalnya, Anda ingin mengubah nama default, "Salinan spreadsheet Tanpa judul" menjadi judul yang lebih mencerminkan tujuan spreadsheet Anda. Anda dapat melakukannya dengan class SpreadsheetApp dan Spreadsheet.

  1. Di editor skrip, ganti blok kode myFunction() default dengan kode berikut:
function renameSpreadsheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  mySS.rename("2017 Avocado Prices in Portland, Seattle");
}
  1. Untuk menyimpan skrip, klik Simpan menyelamatkan.
  2. Untuk mengganti nama project Apps Script, klik Project tanpa judul, masukkan "Harga alpukat" sebagai nama project baru, lalu klik Ganti nama.
  3. Untuk menjalankan skrip, pilih renameSpreadsheet dari daftar fungsi, lalu klik Run.
  4. Beri otorisasi makro dengan mengikuti petunjuk di layar. Jika Anda mendapatkan pesan "Aplikasi ini tidak diverifikasi", klik Lanjutan, lalu klik Buka Harga alpukat (tidak aman). Di layar berikutnya, klik Izinkan.

Setelah fungsi dijalankan, nama file spreadsheet Anda akan berubah:

226c7bc3c2fbf33e.png

Mari kita lihat kode yang Anda masukkan. Metode getActiveSpreadsheet() menampilkan objek yang merepresentasikan spreadsheet aktif; yaitu, salinan spreadsheet latihan yang Anda buat. Objek spreadsheet ini disimpan dalam variabel mySS. Memanggil rename(newName) di mySS akan mengubah nama file spreadsheet di Google Drive menjadi "2017 Avocado Prices in Portland, Seattle".

Karena variabel mySS adalah referensi ke spreadsheet, Anda dapat membuat kode lebih rapi dan efisien dengan memanggil metode Spreadsheet di mySS, bukan memanggil getActiveSpreadsheet() berulang kali.

Menduplikasi sheet aktif

Di spreadsheet saat ini, Anda hanya memiliki satu sheet. Anda dapat memanggil metode Spreadsheet.duplicateActiveSheet() untuk membuat salinan sheet:

  1. Tambahkan fungsi baru berikut di bawah fungsi renameSpreadsheet() yang sudah ada di project skrip Anda:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();
}
  1. Simpan project skrip Anda.
  2. Untuk menjalankan skrip, pilih duplicateAndOrganizeActiveSheet dari daftar fungsi, lalu klik Run.

Kembali ke Spreadsheet untuk melihat tab sheet "Salinan Sheet_Asli" baru ditambahkan ke spreadsheet Anda.

d24f9f4ae20bf7d4.gif

Dalam fungsi baru ini, metode duplicateActiveSheet() membuat, mengaktifkan, dan menampilkan sheet duplikat dalam spreadsheet Anda. Sheet yang dihasilkan ini disimpan di duplicateSheet, tetapi kode belum melakukan apa pun dengan variabel tersebut.

Di bagian berikutnya, Anda akan menggunakan class Sheet untuk mengganti nama dan memformat sheet duplikat.

5. Memformat sheet dengan class Sheet

Class Sheet menyediakan metode yang memungkinkan skrip membaca dan memperbarui sheet. Di bagian ini, Anda dapat mempelajari cara mengubah nama sheet dan lebar kolom dengan metode dari class Sheet.

Mengubah nama sheet

Mengganti nama sheet semudah mengganti nama spreadsheet di renameSpreadsheet(). Hanya satu panggilan metode yang diperlukan.

  1. Di Google Spreadsheet, klik sheet Sheet_Original untuk mengaktifkannya.
  2. Di Apps Script, ubah fungsi duplicateAndOrganizeActiveSheet() agar sesuai dengan yang berikut:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();

  // Change the name of the new sheet.
  duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());
}
  1. Simpan dan jalankan fungsi.

Di Google Spreadsheet, sheet duplikat dibuat dan diganti namanya saat Anda menjalankan fungsi:

91295f42354f62e7.gif

Dalam kode yang ditambahkan, metode setName(name) mengubah nama duplicateSheet, menggunakan getSheetID() untuk mendapatkan nomor ID unik sheet. Operator + menggabungkan ID sheet ke akhir string "Sheet_".

Mengubah kolom dan baris sheet

Anda juga dapat menggunakan class Sheet untuk memformat sheet. Misalnya, kita dapat memperbarui fungsi duplicateAndOrganizeActiveSheet() Anda untuk mengubah ukuran kolom pada sheet duplikat, dan menambahkan baris yang dibekukan:

  1. Di Google Spreadsheet, klik sheet Sheet_Original untuk mengaktifkannya.
  2. Di Apps Script, ubah fungsi duplicateAndOrganizeActiveSheet() agar sesuai dengan yang berikut:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();

  // Change the name of the new sheet.
  duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());

  // Format the new sheet.
  duplicateSheet.autoResizeColumns(1, 5);
  duplicateSheet.setFrozenRows(2);
}
  1. Simpan dan jalankan fungsi.

Di Google Spreadsheet, sheet duplikat dibuat, diganti namanya, diaktifkan, dan diformat:

2e57c917ab157dad.gif

Kode yang Anda tambahkan menggunakan autoResizeColumns(startColumn, numColumns) untuk mengubah ukuran kolom sheet agar mudah dibaca. Metode setFrozenRows(rows) membekukan jumlah baris yang ditentukan (dalam hal ini dua), yang membuat baris header tetap terlihat saat pembaca men-scroll ke bawah spreadsheet.

Di bagian berikutnya, Anda akan mempelajari rentang dan manipulasi data dasar.

6. Menyusun ulang data dengan class Range

Class Range dan metodenya menyediakan sebagian besar opsi manipulasi dan pemformatan data di layanan Spreadsheet.

Bagian ini memperkenalkan manipulasi data dasar dengan rentang. Latihan ini berfokus pada cara menggunakan rentang di Apps Script, sementara codelab lain dalam playlist ini membahas lebih mendalam manipulasi dan pemformatan data.

Memindahkan rentang

Anda dapat mengaktifkan dan memindahkan rentang data dengan metode class dan notasi A1, yaitu singkatan untuk mengidentifikasi kumpulan sel tertentu dalam spreadsheet. Jika perlu mempelajari kembali, Anda dapat melihat deskripsi notasi A1 ini.

Mari kita perbarui metode duplicateAndOrganizeActiveSheet() Anda untuk memindahkan beberapa data:

  1. Di Google Spreadsheet, klik sheet Sheet_Original untuk mengaktifkannya.
  2. Di Apps Script, ubah fungsi duplicateAndOrganizeActiveSheet() agar sesuai dengan yang berikut:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();

  // Change the name of the new sheet.
  duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());

  // Format the new sheet.
  duplicateSheet.autoResizeColumns(1, 5);
  duplicateSheet.setFrozenRows(2);

  // Move column F to column C.
  var myRange = duplicateSheet.getRange("F2:F");
  myRange.moveTo(duplicateSheet.getRange("C2"));
}
  1. Simpan dan jalankan fungsi.

Saat Anda menjalankan fungsi ini, lembar duplikat akan dibuat, diaktifkan, dan diformat. Selain itu, konten kolom F dipindahkan ke kolom C:

10ea483aec52457e.gif

Kode baru menggunakan metode getRange(a1Notation) untuk mengidentifikasi rentang data yang akan dipindahkan. Dengan memasukkan notasi A1 "F2:F" sebagai parameter metode, Anda menentukan kolom F (tidak termasuk F1). Jika rentang yang ditentukan ada, metode getRange(a1Notation) akan menampilkan instance Range-nya. Kode menyimpan instance dalam variabel myRange agar mudah digunakan.

Setelah rentang diidentifikasi, metode moveTo(target) akan mengambil konten myRange (baik nilai maupun pemformatan) dan memindahkannya. Tujuan (kolom C) ditentukan menggunakan notasi A1 "C2". Ini adalah satu sel, bukan kolom. Saat memindahkan data, Anda tidak perlu mencocokkan ukuran dengan rentang target dan tujuan. Apps Script hanya menyelaraskan sel pertama dari setiap rentang.

Mengurutkan rentang

Class Range memungkinkan Anda membaca, memperbarui, dan mengatur grup sel. Misalnya, Anda dapat mengurutkan rentang data menggunakan metode Range.sort(sortSpecObj):

  1. Di Google Spreadsheet, klik sheet Sheet_Original untuk mengaktifkannya.
  2. Di Apps Script, ubah fungsi duplicateAndOrganizeActiveSheet() agar sesuai dengan yang berikut:
function duplicateAndOrganizeActiveSheet() {
  var mySS = SpreadsheetApp.getActiveSpreadsheet();
  var duplicateSheet = mySS.duplicateActiveSheet();

  // Change the name of the new sheet.
  duplicateSheet.setName("Sheet_" + duplicateSheet.getSheetId());

  // Format the new sheet.
  duplicateSheet.autoResizeColumns(1, 5);
  duplicateSheet.setFrozenRows(2);

  // Move column F to column C.
  var myRange = duplicateSheet.getRange("F2:F");
  myRange.moveTo(duplicateSheet.getRange("C2"));

  // Sort all the data using column C (Price information).
  myRange = duplicateSheet.getRange("A3:D55");
  myRange.sort(3);
}
  1. Simpan dan jalankan fungsi.

Sekarang, selain format sebelumnya, fungsi ini mengurutkan semua data dalam tabel menggunakan informasi harga di kolom C:

a6cc9710245fae8d.png

Kode baru menggunakan getRange(a1Notation) untuk menentukan rentang baru yang mencakup A3:D55 (seluruh tabel, tidak termasuk header kolom). Kode kemudian memanggil metode sort(sortSpecObj) untuk mengurutkan tabel. Di sini, parameter sortSpecObj adalah nomor kolom yang akan diurutkan. Metode ini mengurutkan rentang sehingga nilai kolom yang ditunjukkan akan diurutkan dari terendah hingga tertinggi (nilai menaik). Metode sort(sortSpecObj) dapat melakukan persyaratan pengurutan yang lebih kompleks, tetapi Anda tidak memerlukannya di sini. Anda dapat melihat semua cara berbeda untuk memanggil rentang pengurutan dalam dokumentasi referensi metode.

Selamat, Anda telah berhasil menyelesaikan semua latihan dalam codelab ini. Bagian berikutnya meninjau poin-poin penting dari codelab ini dan melihat pratinjau codelab berikutnya dalam playlist ini.

7. Kesimpulan

Anda telah mencapai akhir codelab ini. Anda kini dapat menggunakan dan menentukan class serta istilah penting layanan Spreadsheet di Apps Script.

Anda siap melanjutkan ke codelab berikutnya.

Apakah codelab ini bermanfaat bagi Anda?

Ya Tidak

Yang telah kita bahas

Langkah berikutnya

Codelab berikutnya dalam playlist ini membahas lebih mendalam cara membaca, menulis, dan mengubah data dalam spreadsheet.

Temukan codelab berikutnya di Bekerja dengan data.