Membuat soal data dari spreadsheet

Berikut ini adalah panduan untuk membuat soal dalam google form dimana data soalnya diambil dari sebuah spreadsheet.

Panduan Video

Script untuk membuatnya sudah kami siapkan di bawah

Tampilan Multiple choice

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Custom Menu')
    .addItem('Update Form from Spreadsheet', 'updateFormFromSpreadsheet')
    .addToUi();
}

function updateFormFromSpreadsheet() {
  try {
    var form = FormApp.openById('ID FORM'); // Ganti FORM_ID dengan ID formulir yang benar
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var data = sheet.getDataRange().getValues();


    // Membuat objek untuk menyimpan kunci unik pertanyaan
    var questionKeys = {};

    // Menghapus pertanyaan yang ada di formulir
    var items = form.getItems();
    while (items.length > 0) {
      form.deleteItem(items.pop());
    }

    // Menambahkan pertanyaan baru atau mengupdate pertanyaan yang sudah ada
    var headers = data[0];
    for (var i = 1; i < headers.length; i++) {
      var question = headers[i];
      var choices = [];

      // Membuat kunci unik untuk pertanyaan
      var questionKey = question.toLowerCase().replace(/\s/g, '_');

      // Memeriksa apakah pertanyaan sudah ada sebelumnya
      if (questionKeys.hasOwnProperty(questionKey)) {
        continue; // Lanjut ke iterasi selanjutnya jika pertanyaan sudah ada
      }

      for (var j = 1; j < data.length; j++) {
        var choice = data[j][i];
        if (choice !== "") {
          choices.push(choice);
        }
      }

      if (choices.length > 0) {
        var item = form.addMultipleChoiceItem()
          .setTitle(question)
          .setChoiceValues(choices);

        // Menetapkan bahwa setiap pertanyaan harus memiliki satu jawaban
        item.setRequired(true);

        // Menyimpan kunci unik pertanyaan ke objek
        questionKeys[questionKey] = true;
      }
    }

    SpreadsheetApp.getUi().alert('Formulir berhasil diperbarui dari spreadsheet.');
  } catch (error) {
    SpreadsheetApp.getUi().alert('Terjadi kesalahan: ' + error);
  }
}

Tampilan Dropdown

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Custom Menu')
    .addItem('Update Form from Spreadsheet', 'updateFormFromSpreadsheet')
    .addToUi();
}

function updateFormFromSpreadsheet() {
  try {
    var form = FormApp.openById('ID FORM'); // Ganti FORM_ID dengan ID formulir yang benar
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var data = sheet.getDataRange().getValues();


    // Membuat objek untuk menyimpan kunci unik pertanyaan
    var questionKeys = {};

    // Menghapus pertanyaan yang ada di formulir
    var items = form.getItems();
    while (items.length > 0) {
      form.deleteItem(items.pop());
    }

    // Menambahkan pertanyaan baru atau mengupdate pertanyaan yang sudah ada
    var headers = data[0];
    for (var i = 1; i < headers.length; i++) {
      var question = headers[i];
      var choices = [];

      // Membuat kunci unik untuk pertanyaan
      var questionKey = question.toLowerCase().replace(/\s/g, '_');

      // Memeriksa apakah pertanyaan sudah ada sebelumnya
      if (questionKeys.hasOwnProperty(questionKey)) {
        continue; // Lanjut ke iterasi selanjutnya jika pertanyaan sudah ada
      }

      for (var j = 1; j < data.length; j++) {
        var choice = data[j][i];
        if (choice !== "") {
          choices.push(choice);
        }
      }

      if (choices.length > 0) {
        var item = form.addListItem()
          .setTitle(question)
          .setChoiceValues(choices);

        // Menetapkan bahwa setiap pertanyaan harus memiliki satu jawaban
        item.setRequired(true);

        // Menyimpan kunci unik pertanyaan ke objek
        questionKeys[questionKey] = true;
      }
    }

    SpreadsheetApp.getUi().alert('Formulir berhasil diperbarui dari spreadsheet.');
  } catch (error) {
    SpreadsheetApp.getUi().alert('Terjadi kesalahan: ' + error);
  }
}

Leave a Reply

Your email address will not be published. Required fields are marked *