Langsung ke konten utama

Seri 6: Mengelola File dan Folder di Google Drive Secara Otomatis

Pada seri sebelumnya, kita telah belajar mengirim email otomatis dengan template dinamis, pada  seri ini kita akan belajar:

  • Mengakses dan menelusuri file di Google Drive.

  • Membuat, menyalin, dan memindahkan file/folder.

  • Menghapus file lama secara otomatis.

  • Menggabungkannya dengan trigger waktu untuk backup rutin.


⚙️ 1. Pengenalan DriveApp

Google Apps Script menyediakan layanan bernama DriveApp untuk berinteraksi dengan file dan folder di Google Drive.
Kita bisa menggunakannya untuk melakukan hampir semua hal yang bisa kita lakukan di antarmuka web Google Drive.

Beberapa metode penting:

  • DriveApp.getFiles() → Ambil semua file.

  • DriveApp.getFolderById(id) → Akses folder berdasarkan ID.

  • DriveApp.createFolder(nama) → Buat folder baru.

  • file.makeCopy() → Salin file.

  • file.moveTo(folder) → Pindahkan file.


๐Ÿ“ 2. Membuat Folder Otomatis

Kita mulai dengan hal paling dasar — membuat folder baru di Drive:

function buatFolderBaru() { const folderBaru = DriveApp.createFolder('Backup Mingguan'); Logger.log('Folder dibuat: ' + folderBaru.getName()); }

Setelah dijalankan, folder bernama “Backup Mingguan” akan muncul di Drive kita.


๐Ÿ“‚ 3. Menemukan Folder Berdasarkan Nama

Jika kita ingin mencari folder yang sudah ada:

function cariFolder() { const folders = DriveApp.getFoldersByName('Backup Mingguan'); if (folders.hasNext()) { const folder = folders.next(); Logger.log('Folder ditemukan: ' + folder.getName()); } else { Logger.log('Folder tidak ditemukan.'); } }

๐Ÿ’ก getFoldersByName() mengembalikan iterator — artinya bisa ada lebih dari satu folder dengan nama sama, jadi kita perlu hasNext() dan next() untuk mengambilnya.


๐Ÿงพ 4. Menyalin File ke Folder Lain

Misalnya kita ingin menyalin file laporan dari folder utama ke folder backup otomatis.

function salinFileKeBackup() { const fileId = 'ID_FILE_ASLI'; // Ganti dengan ID file nyata const folderBackup = DriveApp.getFoldersByName('Backup Mingguan').next(); const fileAsli = DriveApp.getFileById(fileId); const fileSalinan = fileAsli.makeCopy(`Backup - ${new Date().toISOString()}`, folderBackup); Logger.log(`File berhasil disalin: ${fileSalinan.getName()}`); }

๐Ÿ‘‰ ID file bisa kita ambil dari URL Google Drive:
contohnya

https://drive.google.com/file/d/1abcXYZ123/view?usp=sharing → ID-nya: 1abcXYZ123

Seri 6: Mengelola File dan Folder di Google Drive Secara Otomatis



๐Ÿ—ƒ️ 5. Memindahkan File

Kita juga bisa memindahkan file dari satu folder ke folder lain:

function pindahkanFile() { const file = DriveApp.getFileById('ID_FILE_ASLI'); const folderTujuan = DriveApp.getFoldersByName('Arsip').next(); file.moveTo(folderTujuan); Logger.log('File berhasil dipindahkan ke folder Arsip'); }

⚠️ Catatan:
File yang dipindahkan akan hilang dari folder asal (bukan disalin).


๐Ÿงน 6. Menghapus File Lama Otomatis

Kita bisa membuat sistem pembersihan otomatis — misalnya menghapus file backup yang lebih tua dari 7 hari.

function hapusFileLama() { const folderBackup = DriveApp.getFoldersByName('Backup Mingguan').next(); const files = folderBackup.getFiles(); const batasWaktu = new Date(); batasWaktu.setDate(batasWaktu.getDate() - 7); while (files.hasNext()) { const file = files.next(); const tanggalBuat = file.getDateCreated(); if (tanggalBuat < batasWaktu) { Logger.log(`Menghapus file lama: ${file.getName()}`); file.setTrashed(true); // Mengirim ke “Trash” } } }

Dengan begini, setiap minggu kita bisa bersihkan backup lama agar Drive tidak penuh.


๐Ÿ• 7. Otomasi Backup dengan Trigger Waktu

Kita bisa gabungkan semua logika di atas dengan trigger waktu agar berjalan otomatis tiap minggu.

function buatTriggerBackupMingguan() { ScriptApp.newTrigger('salinFileKeBackup') .timeBased() .everyWeeks(1) .onWeekDay(ScriptApp.WeekDay.MONDAY) .atHour(8) .create(); }

Dengan script ini, file kita akan otomatis dibackup ke folder “Backup Mingguan” setiap Senin pagi jam 8.


๐Ÿง  8. Tips Praktis

  • Gunakan Logger.log() atau console.log() (jika pakai V8 engine) untuk melihat hasil proses.

  • Jangan lupa periksa kuota Drive — script tidak akan bisa membuat salinan jika penyimpanan penuh.

  • Gunakan file.getUrl() untuk mendapatkan link ke file hasil proses.


Di seri ini kita sudah belajar:

  • Menggunakan DriveApp untuk membuat dan mencari folder.

  • Menyalin dan memindahkan file antar folder.

  • Menghapus file lama secara otomatis.

  • Menjadwalkan backup mingguan dengan trigger waktu.

Dengan kemampuan ini, kita bisa membuat sistem backup, arsip, dan manajemen dokumen otomatis yang sepenuhnya berjalan di cloud.


๐Ÿ”œ Seri Selanjutnya

➡️ Seri 7: Membuat Add-on Sederhana untuk Google Sheets

Kita akan belajar bagaimana membuat menu khusus di Google Sheets, lalu menambahkan tombol atau fungsi yang bisa dipakai langsung oleh pengguna — seolah kita membuat aplikasi mini di dalam Spreadsheet.

Komentar

Postingan populer dari blog ini

Cara Efektif Menggunakan StringGrid

StringGrid merupakan salah satu VCL yang sangat berguna. Jika anda sudah familiar dengan Webbased Application, anda bisa analogikan StringGrid dengan Table. Table digunakan untuk meenampilkan data. Adapun StringGrid, selain sebagai komponen untuk menampilkan data, dia juga juga bisa sebagai tempat untuk memasukkan data, lihat gambar di bawah ini : Pada gambar di atas, saya menampilkan form jurnal umum sebagai contoh penggunaan StringGrid. Pada contoh di atas, stringgrid dipakai untuk memasukkan data item jurnal berupa Kode dan nama perkiraan, status Debet/Kredit dan Nominal. Untuk memanfaatkan Stringgrid saya mempunyai beberapa konstanta yang mencerminkan nomor urut kolom, misalnya _KolKode merujuk pada kolom Kode Perkiraan, _KolNama merujuk pada kolom Nama. Lebih jelasnya lihat baris kode berikut : Const _KolKode : Integer = 0; _KolNama : Integer = 1; _KolDK : Integer = 2; _KolNominal : Integer = 3; Konstanta-konstanta tersebut saya pakai di beberapa tempat. Diantaran...

Tanda-tanda programmer buruk

Dalam dunia pekerjaan, ada berbagai cara untuk menjadi tidak efektif. Berikut adalah beberapa perilaku yang sering terjadi pada beberapa programmer yang pernah saya kerjakan selama bertahun-tahun: "Saya Seorang Insinyur Perangkat Lunak, Bukan Programmer"  Anda tahu seperti apa mereka. Mereka membawa keyboard mekanis ke kantor? Mereka tidak bisa ikut dalam pertemuan harian karena terlalu sibuk memikirkan masalah tersebut (hanya butuh 5 menit untuk menyampaikan apa yang Anda pikirkan). Berapa lama waktu yang dibutuhkan untuk mendapatkan latte? Saya tidak begitu yakin bagaimana seseorang bisa menjadi begitu sombong dengan pengalaman 3 tahun, tapi begitulah adanya. Saya suka mengesankan orang dengan gelar pekerjaan saya. Siapa? Apa maksud Anda, tidak ada yang peduli. Mungkin sebaiknya Anda menghabiskan lebih banyak waktu untuk bekerja dan sedikit waktu untuk memikirkan status Anda? Papan Tulis di Belakang  Beberapa orang di industri ini memiliki gelar. Saya pernah bekerja deng...

Singleton Pattern

Motivasi Kadang ada keadaan di mana kita hanya boleh memiliki satu instan dari suatu kelas. Sebagai contoh, kita hanya boleh memiliki satu window manager (atau satu sistem file atau satu spooler printer) pada satu aplikasi. Biasanya singleton digunakan untuk managemen sumber daya internal maupun eksternal secara terpusat dan bisa diakses dimanapun. Singleton merupkan salah satu design pattern yang paling sederhana. Singleton hanya melibatkan satu kelas yang bertanggung jawab untuk menginstansiasi dirinya sendiri dan pada saat yang bersamaan menyediakan akses secara global terhadap instan tersebut. Pada pattern singleton, instan bisa diakses dari manapun tanpa harus memanggil contructor dari kelas instan tersebut Tujuan • Memastikan bahwa satu kelas hanya bisa dibuat instannya sekali. • Menyediakan akses secara global terhadap instan singleton tersebut. Implementasi Pada bahasa pemrograman Java, implementasi dari singleton adalah dengan membuat sebuah atribut static pada...