it-swarm.asia

Google e-tablo verilerini uygulama komut dosyasıyla google formlarına içe aktar

İnterneti aradım ve buna ne de bununla ilgili bir cevabını bulamadım. Dinamik olarak Google’ın uygulama komut dosyasını kullanarak bir Google e-tablodaki verilerle ilgili sorular oluşturmasına ihtiyacım var, ancak nasıl yapılacağını bilmiyorum Bir elektronik tabloya başvuru yapmak ve okumak için.

9
Vector

Çok basit, buraya bakın: https://developers.google.com/apps-script/guides/sheets#reading

Sayfayı doc tuşuyla açmanız, verileri seçmeniz ve hücreleri bir JS nesnesi olarak okumanız yeterlidir.

4
bjorke

Elektronik tablonuzda Tools > Script Editor öğesini seçin ve bunu ihtiyaçlarınıza göre uyarlayın:

/**
   After any change in the sheet, update the combobox options in the Form
*/
function onChange(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
  var range = sheet.getDataRange();
  var values = range.getValues();
  var comboValues = [];  // <-- cheddar will go here

  // in this example we are interested in column 0 and discarding row 1 (the titles)
  for (var i = 1; i <= values.length; i++) {
    var v = values[i] && values[i][0];
    v && comboValues.Push(v)
  }

  // Sort the values alphabetically, case-insensitive
  comboValues.sort(
    function(a, b) {
      if (a.toLowerCase() < b.toLowerCase()) return -1;
      if (a.toLowerCase() > b.toLowerCase()) return 1;
      return 0;
    }
  );
  Logger.log(comboValues);

  // Use your form ID here. You can get it from the URL
  var form = FormApp.openById('<my-form-id>');

  /* 
    Uncomment this to display the item IDs
    and pick the one that you want to modify

  var items = form.getItems();
  for (i = 0; i < items.length; i++) {
    Logger.log("ID: " + items[i].getId(), ': ' + items[i].getType());
  }
  */
  form.getItemById(807137578).asListItem().setChoiceValues(comboValues);

};

Hata ayıklamak için açılan kutudaki betiği seçin ve "oynat" veya "hata ayıkla" yı tıklayın. İlk defa elektronik tablonuz ve formunuzla etkileşime girme izni vermeniz gerekir.

Sonuçtan memnun kaldığınızda, editörde Resources > Triggers for the active project öğesini seçin ve bu yöntemi e-tablodaki herhangi bir değişiklikle tetiklenecek şekilde ekleyin (değişiklikte değil, düzenleme üzerinde). 

Bundan sonra, form seçenekleriniz e-tablonuzdaki herhangi bir değişiklikten sonra gerçek zamanlı olarak değiştirilecektir.

12
Nacho Coloma

İşte benim için çalışan bir örnek, pls kontrol edin:

function getSpreadsheetData(sheetId) {
  // This function gives you an array of objects modeling a worksheet's tabular data, where the first items — column headers — become the property names.
  var arrayOfArrays = SpreadsheetApp.openById(sheetId).getDataRange().getValues();
  var headers = arrayOfArrays.shift();
  return arrayOfArrays.map(function (row) {
    return row.reduce(function (memo, value, index) {
      if (value) {
        memo[headers[index]] = value;
      }
      return memo;
    }, {});
  });
}

function makeOurForm() {

  var sheetId='input_your_sheet_id'

  getSpreadsheetData(sheetId).forEach(function (row) {
// Set your form template as follows
  var formName=row.Name
// Create your form programmatically, each row means one form
  var form = FormApp.create(formName)

  form.setDescription('xxx');

  var capitalizedName = row.Name.charAt(0).toUpperCase() + row.Name.slice(1);

  form.addSectionHeaderItem().setTitle(capitalizedName);

  var item = form.addMultipleChoiceItem();
  item.setTitle('xxx')
      .setChoices([
        item.createChoice('xxx'),
      ]);

  form.addParagraphTextItem().setTitle('xxx');
  });
}

Sayfa kimliğinizi URL’den alabilirsiniz, örneğin:

https://docs.google.com/spreadsheets/d/YourSheetId/ düzenle # gid = 0

Başka sorunuz olursa bana bildirin.

0
Bowen Xu