Berikut adalah langkah-langkah untuk membuat script Google Apps Script yang berfungsi untuk membackup spreadsheet ke folder tertentu di Google Drive setiap hari pada jam tertentu, dan mengirimkan file backup dalam format XLSX yang dikompres ke ZIP melalui email. Teknik backup ini memberikan solusi jika terjadi sesuatu yang tidak diinginkan atau human error pada tim kita.
1. Buka Google Apps Script
- Buka Google Drive Anda.
- Klik tombol "New" -> "More" -> "Google Apps Script".
2. Masukkan Kode Script
Salin dan tempel kode berikut ke dalam editor Google Apps Script:
function backupSpreadsheet() {
// ID Spreadsheet yang ingin di-backup
var spreadsheetId = "<ID SPREADSHEET>"; // Ganti dengan ID Spreadsheet Anda
var spreadsheet = SpreadsheetApp.openById(spreadsheetId);
// Buat salinan spreadsheet
var currentDate = new Date();
var formattedDate = Utilities.formatDate(currentDate, Session.getScriptTimeZone(), "yyyy-MM-dd_HH-mm-ss");
var copyTitle = spreadsheet.getName() + " Backup " + formattedDate;
var copy = spreadsheet.copy(copyTitle);
// ID Folder Google Drive tempat menyimpan salinan
var folderId = "<ID FOLDER>"; // Ganti dengan ID Folder Google Drive Anda
var folder = DriveApp.getFolderById(folderId);
var copiedFile = DriveApp.getFileById(copy.getId());
folder.addFile(copiedFile);
// Hapus salinan dari root folder
DriveApp.getRootFolder().removeFile(copiedFile);
// Konversi file ke format XLSX
var xlsxBlob = convertToXlsx(copy.getId(), formattedDate);
// Kompres file XLSX ke dalam file ZIP
var zipBlob = Utilities.zip([xlsxBlob], "backup_" + formattedDate + ".zip");
// Kirim salinan melalui email sebagai lampiran ZIP
var emailAddress = "<EMAIL TUJUAN>"; // Ganti dengan alamat email yang diinginkan
var currentDateTime = new Date();
var emailSubject = "Salinan Spreadsheet - " + Utilities.formatDate(currentDateTime, Session.getScriptTimeZone(), "yyyy-MM-dd HH:mm:ss");
var emailBody = "Halo,\n\nBerikut adalah Backup spreadsheet master 2018 dalam format ZIP: \n\nSalam,\nTim Classy Indonesia";
try {
MailApp.sendEmail({
to: emailAddress,
name: 'BACKUP DATA',
subject: emailSubject,
body: emailBody,
attachments: [zipBlob]
});
} catch (e) {
Logger.log("Gagal mengirim email: " + e.message);
}
// Hapus salinan spreadsheet
DriveApp.getFileById(copy.getId()).setTrashed(true);
}
function convertToXlsx(fileId, formattedDate) {
var url = "https://docs.google.com/spreadsheets/d/" + fileId + "/export?format=xlsx";
var token = ScriptApp.getOAuthToken();
var response = UrlFetchApp.fetch(url, {
headers: {
Authorization: "Bearer " + token
}
});
return response.getBlob().setName("backup_" + formattedDate + ".xlsx");
}
function createTrigger() {
// Hapus semua trigger sebelumnya
var triggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < triggers.length; i++) {
ScriptApp.deleteTrigger(triggers[i]);
}
// Buat trigger baru
ScriptApp.newTrigger("backupSpreadsheet")
.timeBased()
.everyDays(1)
.atHour(13) // Ganti dengan jam yang diinginkan (0-23)
.create();
}
3. Simpan Script
- Klik "File" -> "Save".
- Beri nama proyek Anda, misalnya "Backup Spreadsheet".
4. Jalankan Fungsi createTrigger
- Di editor, pilih fungsi
createTrigger
dari dropdown dan klik tombol "Run". - Berikan izin yang diperlukan untuk skrip tersebut.