#JP96 Google Form Dropdown Dynamic dan Membuat Folder Otomatis Setiap Submit Sesuai Nama

Google Form Dropdown Dynamic dan Membuat Folder Otomatis Setiap Submit Sesuai Nama



1. Copy Spreadsheet Data Dropdown yang akan ditampilkan pada Google Form (Klik Disini)

2. Copy contoh Google Form (Klik Disini)

3. Karena terdapat pertanyaan bertipe upload file maka setelah mengcopy Google Form di atas akan muncul pemberitahuan untuk memulihkan folder sebagai tempat penyimpanan file. Silahkan klik Pulihkan/Restore


Setelah berhasil dipulihkan/restore maka pada Google Drive akan ada folder baru untuk menyimpan berkas.






4. Kembali pada Google Form, pilih menu Jawaban/Responses dan hubungan ke Spreadsheet untuk menyimpan data dari Google Form.


5. Buatlah lembar kerja Apps Script dengan cara klik titik 3 (tiga) di pojok kanan atas lalu pilih Script editor/Editor skrip


6. Pada lembar kerja Apps Script terdapat 1 file default itu Kode.gs / Code.gs


7. Copy dan pastekan script di bawah ini ke Kode.gs / Code.gs


Masukkan Password Untuk Melihat Script (Password ada di dalam video)

//Source Code by www.javabitpro.com

// Fungsi untuk mengisi dropdown di Google Form
function onOpen() {
  var form = FormApp.openById('ID_GoogleForm'); // Ganti dengan ID form Anda
  var sheet = SpreadsheetApp.openById('ID_Spreadsheet_DataDropdown'); // Ganti dengan ID spreadsheet Anda
  
  // Ambil data dari spreadsheet tanpa duplikat
  var kotaItems = getUniqueJavabitproColumnValues(sheet, 'Kota', 1);      // Ambil semua data unik dari kolom Kota (kolom A)
  var kecamatanItems = getUniqueJavabitproColumnValues(sheet, 'Kota', 2); // Ambil semua data unik dari kolom Kecamatan (kolom B)
  var desaItems = getUniqueJavabitproColumnValues(sheet, 'Kota', 3);      // Ambil semua data unik dari kolom Desa (kolom C)
  
  // Isi dropdown Kota
  var kotaDropdown = form.getItems(FormApp.ItemType.LIST).filter(function(item) {
    return item.getTitle() === 'Kota'; // Ganti dengan nama field Kota Anda di form
  })[0].asListItem();
  kotaDropdown.setChoiceValues(kotaItems);
  
  // Isi dropdown Kecamatan
  var kecamatanDropdown = form.getItems(FormApp.ItemType.LIST).filter(function(item) {
    return item.getTitle() === 'Kecamatan'; // Ganti dengan nama field Kecamatan Anda di form
  })[0].asListItem();
  kecamatanDropdown.setChoiceValues(kecamatanItems);
  
  // Isi dropdown Desa
  var desaDropdown = form.getItems(FormApp.ItemType.LIST).filter(function(item) {
    return item.getTitle() === 'Desa'; // Ganti dengan nama field Desa Anda di form
  })[0].asListItem();
  desaDropdown.setChoiceValues(desaItems);
}

// Fungsi untuk mengambil semua nilai unik dari kolom tertentu di sheet
function getUniqueJavabitproColumnValues(sheet, sheetName, column) {
  var data = sheet.getSheetByName(sheetName).getRange(2, column, sheet.getLastRow()-1, 1).getValues();
  var uniqueSet = new Set(data.map(function(row) { return row[0]; })); // Menggunakan Set untuk mendapatkan nilai unik
  return Array.from(uniqueSet); // Kembalikan sebagai array nilai unik
}

// Fungsi untuk menangani pengisian form dan mengelola file upload

const FOLDER_ID = 'ID_Folder'
const onFormSubmit = ({ response } = {}) => {
  try {
    const files = response
      .getItemResponses()
      .filter((itemResponse) => itemResponse.getItem().getType().toString() === 'FILE_UPLOAD')
      .map((itemResponse) => itemResponse.getResponse())
      .reduce((a, b) => [...a, ...b], []);
    if (files.length > 0) {
      const subfolderName = response.getItemResponses()[0].getResponse()
      const parentFolder = DriveApp.getFolderById(FOLDER_ID);
      var subfolder = parentFolder.getFoldersByName(subfolderName);
      if(subfolder.hasNext()) subfolder = subfolder.next()
      else subfolder = parentFolder.createFolder(subfolderName)
      files.forEach((fileId) => {
        DriveApp.getFileById(fileId).moveTo(subfolder);
      });
    }
  } catch (f) {
    Logger.log(f);
  }
};


Sesuaikan ID_GoogleForm dan sesuaikan ID_Spreadsheet_DataDropdown


Sesuaikan juga ID_Folder dengan Id Folder Responses yang ada pada Google Drive


8. Klik ikon Save


9. Buatlah Triggers/Pemicu baru untuk mengisi dropdown secara otomatis dan membuat folder otomatis. Klik ikon jam di sebelah kiri editor Apps Script pilih Triggers/Pemicu lalu klik Tambah Pemicu/Add Triggers




10. Buatlah Triggers/Pemicu untuk fungsi onOpen() dan set sebagai On Open. (Samakan dengan gambar di bawah).


11. Silahkan lakukan perijinan akses jika diminta (Tutorial ada di video).

12. Buatlah Triggers/Pemicu untuk fungsi onFormSubmit dan set sebagai On form submit. (Samakan dengan gambar di bawah).


13. Sehingga ada 2 Triggers/Pemicu yang aktif.


14. Kembali ke Editor, jalankan fungsi onOpen()



15. Google Form siap digunakan.

NOTE : Apabila Data Pada Spreadsheet Dropdown Diperbaruhi/Diedit, Agar Data Dropdown Pada Google Form Juga Terupdate Maka Jalankan Fungsi onOpen(). Step nomor 14 di atas

SELESAI!!!

















Previous Post Next Post

Promo