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

Gsheet ,GForms & Telegram

Anda bisa memperkaya keterampilan lebih jauh berkenaan dengan spreadsheets dan google forms.

Silahkan pelajari video-video di bawah

Panduan google forms dari dasar. Cara membuat soal dalam sebuah google forms dan menyimpan data responden dalam sebuah google spread sheets.

Mengkoneksikan data google spreadheets ke dalam sebuah grup telegram

Membuat List Drop Down dalam google form menggunakan data dari spreadsheet.

Jika anda akan membuat list data dalam google form dimana datanya cukup banyak, tentu akan sangat merepotkan jika anda harus mengetik atau copy-paste satu demi satu.

Dengan menggunakan script di bawah, maka anda bisa mengkombinasikan spreadsheets dengan google form dimana spreadsheet difungsikan sebagai tempat untuk menyimpan list data yang akan ditampilkan dalam google form.

Membuat soal dalam words dan mengeksportnya ke dalam google forms. Pembuatan soal ini menggunakan addons (pengaya) yang gratis dan tentu saja fasilitasnya cukup terbatas

Script untuk membuat list dalam google forms

/**
 * Auto-populate Question options in Google Forms
 * from values in Google Spreadsheet
 *
 * Written by Amit Agarwal (MIT License)
 *
 **/

const populateGoogleForms = () => {
  const GOOGLE_SHEET_NAME = "NAMA SHEET ANDA";
  const GOOGLE_FORM_ID = "ID GOOGLE FORM";

  const ss = SpreadsheetApp.getActiveSpreadsheet();

  const [header, ...data] = ss
    .getSheetByName(GOOGLE_SHEET_NAME)
    .getDataRange()
    .getDisplayValues();

  const choices = {};
  header.forEach((title, i) => {
    choices[title] = data.map((d) => d[i]).filter((e) => e);
  });

  FormApp.openById(GOOGLE_FORM_ID)
    .getItems()
    .map((item) => ({
      item,
      values: choices[item.getTitle()],
    }))
    .filter(({ values }) => values)
    .forEach(({ item, values }) => {
      switch (item.getType()) {
        case FormApp.ItemType.CHECKBOX:
          item.asCheckboxItem().setChoiceValues(values);
          break;
        case FormApp.ItemType.LIST:
          item.asListItem().setChoiceValues(values);
          break;
        case FormApp.ItemType.MULTIPLE_CHOICE:
          item.asMultipleChoiceItem().setChoiceValues(values);
          break;
        default:
        // ignore item
      }
    });
  ss.toast("Google Form Updated !!");
};