Langsung ke konten utama

ZIP Folder Google Drive Dengan Apps Script

Anda dapat memanfaatkan Utilities ZIP yang disediakan Apps Script untuk membuat ZIP kompresi folder atau file untuk kemudian disimpan sebagai arsip di Google Drive atau dikirimkan ke Telegram.

BAHAN BAKU

Untuk mengimplementasikan eksperimen ini perlu dipersiapkan beberapa hal:

  1. ID dari Folder Google Drive yang akan di-zip, cara mendapatkan ID silahkan simak dalam artikel ini.
  2. Satu file Apps Script, anda bisa menyimak cara membuatnya dan deployment Web Apps di artikel ini.
  3. Script eksperimen ini yang dapat unduh atau salin dari repository.
  4. ID User anda sebagai admin bot yang akan digunakan untuk menampung keterangan error bila terjadi kendala, gunakan @simrsinfobot untuk mengetahui ID User anda.

Di dalam script terdapat beberapa konstata yang harus anda isi dengan ID, API TOKEN, dan URL file bahan baku milik anda:

Bila anda menemui kendala saat deployment silahkan simak cara penanganannya pada artikel iniSiLiKiDi

FOLDER SERTIFIKAT

Sebagai target praktikum kita akan mencoba membuat ZIP dari folder yang berisi PDF Sertifikat di Google Drive:

ALUR SCRIPT

  1. Periksa konten folder yang akan dibuatkan ZIP tidak kosong
  2. Periksa folder sharing access dan folder permission yang menjadi tempat penyimpanan ZIP
  3. Periksa apakah sebelumnya di folder tersebut sudah ada file ZIP, bila ada dihapus
  4. Buat ZIP dari target folder
  5. Simpan ZIP ke folder Google Drive
  6. Dapatkan URL untuk mengakses ZIP tersebut

MEMERIKSA KONTEN FOLDER

Proses ZIP hanya akan dilakukan bila folder tidak kosong dengan memanfaatkan metode pengecekan hasNext():


var fileList = folderAkses.getFiles();
if ( fileList.hasNext() ) {...}

FOLDER SHARING ACCESS DAN PERMISSION

Pastikan folder yang akan menjadi tempat menyimpan ZIP untuk disetel folder sharing access dalam status ANYONE_WITH_LINK untuk kemudahan user mengakses ZIP dan folder permission dalam status VIEW untuk pengamanan hanya bisa melihat saja tetapi masih bisa mengunduhnya.

Kita gunakan metode getSharingAccess() dan getSharingPermission() untuk memeriksa ijin akses dari folder tersebut:


if ( 
  folderAkses.getSharingAccess() !== DriveApp.Access.ANYONE_WITH_LINK 
  && 
  folderAkses.getSharingPermission() !== DriveApp.Permission.VIEW 
) {
  folderAkses.setSharing( 
    DriveApp.Access.ANYONE_WITH_LINK, 
    DriveApp.Permission.VIEW 
  );
}

HAPUS ARSIP ZIP LAMA

Untuk menghindari redundansi, bila ditemukan ZIP dengan nama file yang sama akan dihapus dengan metode setTrashed():


if ( file.getName() === folderName + ".zip" ) {
  file.setTrashed( true );
} 
setTrashed() tidak menghapus permanen melainkan mengalihkannya ke tempat sampah sehingga anda bisa me-recovery-nya bilamana diperlukanSiLiKiDi

PENGOLAHAN ZIP

Untuk membuat ZIP gunakan metode zip() dengan dua paramater: blob file dan nama file:

var zipFile = Utilities.zip( fileBLOB, folderName + ".zip" );

ZIP kemudian disimpan dalam sebuah folder dengan menggunakan metode createFile() sekaligus mendapatkan ID file dari ZIP tersebut dengan metode getId():

var zipID = folderAkses.createFile( zipFile ).getId();

Dapatkan URL dari ZIP tersebut untuk kemudahan diakses oleh user dengan menggunakan metode getUrl():

var zipURL = DriveApp.getFileById( zipID ).getUrl();

FINAL SCRIPT

Final Script dapat diunduh di repository seperti tampak berikut dengan screenshot hasil eksekusinya:

Selanjutnya kembangkan oleh anda agar file ZIP tersebut dikirimkan ke Telegram dengan metode sendDocumentSiLiKiDi
Dapatkan skrip semua materi di repository

Dukung donasi agar tutorial ini tetap operasional:
Trakteer Saya SiLiKiDi

Komentar

Postingan populer dari blog ini

Scraping Data Emas Antam dan Google Finance

Web Scraping menjadi solusi alternatif ketika kita memerlukan data dari suatu website yang tidak menyediakan API.

Facebook Shop Dengan Google Apps Script - EKSPERIMEN #3

Eksperimen 3 merupakan pengembangan dari Eksperimen 2. Yang membedakan kali ini lebih fokus di keluaran HTML dan bentuknya yang modular untuk memudahkan debugging.