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
danSpreadsheet
. - 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.
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.
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.
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
.
- 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");
}
- Untuk menyimpan skrip, klik Simpan
.
- Untuk mengganti nama project Apps Script, klik Project tanpa judul, masukkan "Harga alpukat" sebagai nama project baru, lalu klik Ganti nama.
- Untuk menjalankan skrip, pilih
renameSpreadsheet
dari daftar fungsi, lalu klik Run. - 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:
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:
- 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();
}
- Simpan project skrip Anda.
- 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.
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.
- Di Google Spreadsheet, klik sheet
Sheet_Original
untuk mengaktifkannya. - 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());
}
- Simpan dan jalankan fungsi.
Di Google Spreadsheet, sheet duplikat dibuat dan diganti namanya saat Anda menjalankan fungsi:
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:
- Di Google Spreadsheet, klik sheet
Sheet_Original
untuk mengaktifkannya. - 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);
}
- Simpan dan jalankan fungsi.
Di Google Spreadsheet, sheet duplikat dibuat, diganti namanya, diaktifkan, dan diformat:
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:
- Di Google Spreadsheet, klik sheet
Sheet_Original
untuk mengaktifkannya. - 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"));
}
- 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:
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)
:
- Di Google Spreadsheet, klik sheet
Sheet_Original
untuk mengaktifkannya. - 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);
}
- Simpan dan jalankan fungsi.
Sekarang, selain format sebelumnya, fungsi ini mengurutkan semua data dalam tabel menggunakan informasi harga di kolom C:
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?
Yang telah kita bahas
- Cara spreadsheet, sheet, dan rentang direpresentasikan di Apps Script.
- Beberapa penggunaan dasar class
SpreadsheetApp
,Spreadsheet
,Sheet
, danRange
.
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.