Upload SKP PPL di ePersonal, Cara Otomatis Pisah PDF Per IKI dengan Google Apps Script

11 April 2026 15:00
Bagikan :
Ilustrasi otomatisasi pemisahan file PDF SKP PPL untuk ePersonal tahun 2026. (DoyanDuit)

DOYANDUIT – Mengelola dokumen Sasaran Kinerja Pegawai (SKP) seringkali menjadi tantangan tersendiri bagi para Penyuluh Pertanian Lapangan (PPL).

Salah satu kendala teknis yang paling menguras waktu adalah kewajiban mengunggah dokumen bukti fisik atau eviden yang harus dipisah berdasarkan masing-masing Indikator Kinerja Individu (IKI).

Jika dilakukan secara manual, Anda harus memotong file PDF satu per satu, memberi nama, lalu mengunggahnya.

Namun, berdasarkan pengamatan banyak pengguna di tahun 2026 ini, penggunaan efisiensi teknologi seperti Google Apps Script dapat memangkas waktu kerja hingga 80%.

Mengapa Harus Memisah File PDF Per IKI?

Saat membuka platform ePersonal, sistem menuntut unggahan file yang spesifik untuk setiap poin laporan. Mulai dari data Luas Tambah Tanam (LTT) di SP Tanaman Pangan hingga laporan verifikasi pupuk bersubsidi, semuanya memiliki slot masing-masing.

Memaksakan satu file gabungan untuk semua IKI bukan hanya tidak rapi, tetapi berisiko pada penilaian kinerja.

Sistem digital saat ini bersifat kaku terhadap tanggal unggah (timestamp), sehingga keterlambatan karena proses manual yang lama bisa berdampak pada pemotongan tunjangan kinerja.

Persiapan Automasi: Menautkan Google Doc dan Data

Sebelum menjalankan kode otomatisasi, pastikan Google Doc Anda sudah tertaut dengan sumber data (seperti Google Form atau Spreadsheet).

  • Update Data: Pastikan semua objek tertaut sudah diperbarui. Klik tombol ‘Update’ pada dokumen jika ada data terbaru dari Google Form.

  • Kesesuaian Urutan: Pastikan urutan pembahasan di dokumen Anda sama persis dengan urutan IKI di sistem ePersonal. Misalnya, jika urutan pertama adalah LTT, maka halaman pertama dokumen harus berisi laporan LTT.

Tentu, ini adalah panduan lengkap yang telah dirancang ulang agar lebih sistematis, mudah diikuti, dan siap diunggah sebagai artikel tutorial atau panduan kerja bagi rekan-rekan PPL.

Panduan Teknis: Otomatisasi Pemisahan PDF SKP Per IKI (Edisi 2026)

Laporan Sasaran Kinerja Pegawai (SKP) di platform ePersonal seringkali mengharuskan kita mengunggah dokumen bukti fisik (eviden) secara terpisah berdasarkan Indikator Kinerja Individu (IKI).

Untuk efisiensi waktu, kita dapat menggunakan dua tahap otomatisasi: merapikan data di Google Sheets dan mencetak PDF otomatis di Google Docs.

Tahap 1: Merapikan Data di Google Spreadsheet

Langkah ini bertujuan untuk membagi data mentah dari Google Form ke dalam kategori IKI masing-masing dan membuat Named Range agar tersambung otomatis ke laporan.

Cara Menggunakan:

  1. Buka Spreadsheet hasil Google Form Anda.

  2. Klik menu Extensions > Apps Script.

  3. Hapus kode lama dan tempelkan kode berikut:

JavaScript
// ==================== SISTEM OTOMASI DATA PPL ====================
function pisahBerdasarkanUraian() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getActiveSheet();
  const [headers, ...rows] = sheet.getDataRange().getValues();
  const idx = (name) => headers.indexOf(name);
  const dataPerUraian = {};

  rows.forEach(row => {
    const uraian = (row[idx("Uraian")] || "Tanpa Uraian").toString().trim();
    if (!dataPerUraian[uraian]) dataPerUraian[uraian] = [];
    const toImg = (url) => url ? url.toString().replace("open?id=", "uc?id=") : "";
    
    dataPerUraian[uraian].push({
      materi: row[idx("Materi")],
      waktu: `${row[idx("Hari")] || ""}, ${row[idx("Tgl")] || ""}`,
      tempat: row[idx("Tempat")],
      stats: [toImg(row[idx("Like")]), toImg(row[idx("Komen")]), toImg(row[idx("Share")])]
    });
  });

  Object.keys(dataPerUraian).sort().forEach(kategori => {
    let s = ss.getSheetByName(kategori) || ss.insertSheet(kategori);
    s.clear();
    const rowsData = dataPerUraian[kategori];
    const isPenderasan = kategori.toLowerCase().includes("penderasan");

    if (isPenderasan) {
      s.getRange(1, 1, 1, 7).setValues([["No", "Kegiatan", "Waktu", "Tempat", "Like", "Komen", "Share"]]).setFontWeight("bold").setBackground("#e6f3ff");
      rowsData.forEach((d, i) => {
        const r = i + 2;
        s.getRange(r, 1, 1, 4).setValues([[i + 1, d.materi, d.waktu, d.tempat]]);
        d.stats.forEach((url, j) => url && s.getRange(r, 5 + j).setFormula(`=IMAGE("${url}"; 1)`));
      });
    } else {
      s.getRange(1, 1, 1, 4).setValues([["No", "Kegiatan", "Waktu", "Tempat"]]).setFontWeight("bold").setBackground("#e6f3ff");
      const values = rowsData.map((d, i) => [i + 1, d.materi, d.waktu, d.tempat]);
      s.getRange(2, 1, values.length, 4).setValues(values);
    }
    s.setRowHeights(2, rowsData.length, 80);
    setNamedRange(ss, kategori.replace(/\s+/g, '_'), s.getDataRange());
  });
  SpreadsheetApp.getUi().alert("โœ… Data Berhasil Dipisah!");
}

function setNamedRange(ss, name, range) {
  const cleanName = name.replace(/[^a-zA-Z0-9_]/g, "");
  const existing = ss.getNamedRanges().find(nr => nr.getName() === cleanName);
  if (existing) existing.setRange(range);
  else ss.setNamedRange(cleanName, range);
}

function onOpen() {
  SpreadsheetApp.getUi().createMenu('๐Ÿ“Š Custom Menu').addItem('๐Ÿ”„ Jalankan Otomasi', 'pisahBerdasarkanUraian').addToUi();
}
  1. Simpan dan Refresh Spreadsheet. Jalankan melalui Custom Menu.

Tahap 2: Cetak PDF Otomatis di Google Docs

Setelah tabel di Docs terhubung dengan Spreadsheet, gunakan script ini untuk memotong laporan menjadi file PDF per IKI secara otomatis ke dalam folder Drive.

Langkah-langkah:

  1. Buka dokumen laporan Anda di Google Docs.

  2. Pastikan setiap bab IKI dipisahkan dengan Page Break (Ctrl + Enter).

  3. Klik Extensions > Apps Script dan masukkan kode ini:

JavaScript
// ==================== GENERATOR PDF PER FOLDER ====================
function simpanHalamanKePDF() {
  const doc = DocumentApp.getActiveDocument();
  const docFile = DriveApp.getFileById(doc.getId());
  const folder = docFile.getParents().next();
  const folderBaru = folder.createFolder("๐Ÿ“‚ Eviden SKP - " + doc.getName());
  
  const paragraf = doc.getBody().getParagraphs();
  let tempDoc = DocumentApp.create("Temp_File");
  let count = 1;

  paragraf.forEach(p => {
    if (p.getChild(0) && p.getChild(0).getType() === DocumentApp.ElementType.PAGE_BREAK) {
      simpanPDF(tempDoc, folderBaru, count++);
      tempDoc = DocumentApp.create("Temp_File");
    } else {
      tempDoc.getBody().appendParagraph(p.copy());
    }
  });
  
  simpanPDF(tempDoc, folderBaru, count);
  Logger.log("โœ… PDF Berhasil Tersimpan di Folder!");
}

function simpanPDF(doc, folder, i) {
  doc.saveAndClose();
  const pdf = doc.getAs('application/pdf').setName("Eviden_IKI_" + i + ".pdf");
  folder.createFile(pdf);
  DriveApp.getFileById(doc.getId()).setTrashed(true);
}

Cara Eksekusi:

  1. Klik tombol Run pada script di Google Docs.

  2. Berikan izin akses (Otorisasi) melalui pilihan Advanced > Go to [Project] (unsafe).

  3. Cek folder Google Drive Anda. Folder baru berisi file PDF yang sudah terbagi (Eviden_IKI_1, Eviden_IKI_2, dst) sudah siap diunggah ke ePersonal.

Tips Anti-Gagal:

  • Urutan itu Kunci: Pastikan urutan halaman di Google Docs sama dengan urutan IKI di sistem ePersonal (LTT, Horti, Pupuk, dst).

  • Named Range: Jika Anda mengubah isi Spreadsheet, cukup klik Update pada tabel di Google Docs, maka data akan otomatis segar kembali sebelum dicetak ke PDF.

  • Batas Karakter: Hindari memberi nama “Uraian” yang terlalu panjang agar tidak terjadi error pada penamaan sheet.

Dengan panduan ini, proses administrasi SKP yang biasanya memakan waktu berjam-jam kini bisa diselesaikan dalam hitungan menit. Selamat mencoba!

Upload ke ePersonal agar Bebas Kendala

Setelah file PDF terbagi otomatis menjadi 13 file (atau sesuai jumlah IKI Anda), langkah selanjutnya adalah pengunggahan. Ada beberapa hal penting yang sering terlupakan:

  • Tetap Upload Meski “Tidak Ada Potensi”: Seringkali ada IKI yang di wilayah binaan Anda tidak memiliki potensi (misalnya CSR). Tetap unggah file PDF yang berisi keterangan “Tidak Ada Potensi”. Ini penting agar sistem tidak membaca Anda absen mengumpulkan dokumen.

  • Perhatikan Realisasi Target: Pastikan saat mengisi di ePersonal, jumlah laporan (misal: 1 laporan) sesuai dengan file yang diunggah agar sinkronisasi data terjaga.

  • Cek Timestamp: Sistem merekam kapan Anda mengunggah. Hindari mengunggah di menit-menit terakhir batas waktu untuk menghindari server down.

Otomatisasi pemisahan PDF untuk SKP ePersonal menggunakan Google Apps Script adalah solusi terbaik untuk menjaga akurasi dan ketepatan waktu.

Pastikan data di Google Form Anda selalu terupdate sebelum menjalankan script, sehingga setiap file PDF yang dihasilkan mencerminkan kinerja nyata Anda di bulan tersebut.

Berita Terbaru
bupot tanpa transaksi
NPWP Disalahgunakan untuk Faktur Pajak Fiktif? Begini Langkah yang Harus Dilakukan
role akses penandatanganan spt
Coretax DJP Tambah Role Baru Penandatangan SPT 21/26, Data Gaji Pegawai Kini Lebih Terjaga
surat bebas pajak lazada
Cara Isi Surat Keterangan Penghasilan Bebas Pajak Lazada Terbaru, Seller Wajib Tahu Sebelum Upload
survei rumah pendidikan
Cara Mengisi Survei Rumah Pendidikan di Info GTK 2026, Panduan Lengkap untuk Guru dan Kepala Sekolah
XAUUSD_2026-08-03_13-17-31
Harga Emas Hari Ini 3 Agustus 2026: Antam Naik Rp7.000 per Gram, Emas Dunia Rebound di Atas US$4.050