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();

}

Konfigurasi:
   - Ganti `spreadsheetId` dengan ID Spreadsheet yang ingin Anda backup.
   - Ganti `folderId` dengan ID folder Google Drive tempat Anda ingin menyimpan backup.
   - Ganti `emailAddress` dengan alamat email yang akan menerima backup.

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.

Screenshoot File spreadsshet disalin ke folder khusus




Screenshoot outbox pengiriman email