【问题标题】:Create Multiple Choice Question with data from Google Sheet使用 Google 表格中的数据创建多项选择题
【发布时间】:2021-07-05 05:53:17
【问题描述】:

我正在为我的学习计划的库存创建一个数据库,任何想要使用该项目的人都可以访问该数据库。 几个星期以来,我一直在用我的 Google 表格数据库中的数据做多项选择题。

这些代码是我能做的最接近的...而不是创建所有选择,程序只将不同的语句放在 1 个选项中...有人可以帮我做出正确的多项选择吗?

function myFunction() {

var ss = SpreadsheetApp.openById('1lSB55vGZeuaJC0OS3zjpuRHEDCXpUTDYC7MPUVr0tMU');  
var form = FormApp.openById('1sH-qxqiiyh3Qqq28KuYoaNftnY3RUe4FhGq6qck2eMg');

var ss_mediaandchemical = ss.getSheetByName('Stock - Media & Chemical').getRange('K2:K').getValues();
var form_mediaandchemical_question = form.getItemById('447046025').asMultipleChoiceItem();


for (var i in ss_mediaandchemical){
 form_mediaandchemical_question.createChoice(ss_mediaandchemical[i]).isCorrectAnswer;
  form_mediaandchemical_question.setChoiceValues(ss_mediaandchemical[i]);

}
}

【问题讨论】:

    标签: google-apps-script google-forms


    【解决方案1】:

    问题:

    setChoiceValues(values) 将数组中所有提供的值设置为项目的选项,删除之前设置的选项

    由于您正在迭代不同的选择,因此您将使用源数组中的下一个值替换您设置的每个选择。

    另外,getValues() 返回一个二维数组,而您想提供一个简单数组。你可以使用flat() 来解决这个问题。此外,源数据包含几个空单元格,我建议将它们从数组中删除(例如,使用.filter(String)

    最后,createChoice 不会给 item 添加选项,应该和setChoices 结合使用。如果你使用setChoiceValues,那么使用它是没有意义的。

    解决办法:

    检索带有值的简单数组,删除空值,并直接使用setChoiceValues 设置选项,无需遍历数组:

    var ss_mediaandchemical = ss.getSheetByName('Stock - Media & Chemical').getRange('K2:K').getValues().flat().filter(String);
    var form_mediaandchemical_question = form.getItemById('447046025').asMultipleChoiceItem();
    form_mediaandchemical_question.setChoiceValues(ss_mediaandchemical);
    

    如果您想通过createChoice 创建选项(它可以允许更多自定义,例如设置选项as correct 或添加navigation item),您可以这样做:

    var ss_mediaandchemical = ss.getSheetByName('Stock - Media & Chemical').getRange('K2:K').getValues().flat().filter(String);
    var form_mediaandchemical_question = form.getItemById('447046025').asMultipleChoiceItem();
    var choices = ss_mediaandchemical.map(value => form_mediaandchemical_question.createChoice(value));
    form_mediaandchemical_question.setChoices(choices);
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    相关资源
    最近更新 更多