我们有一系列Google表单,其中包含多项选择题,每个问题都有4个可能的答案。
我希望能够将该问题和所有可能的答案导出到该Google表单中的所有问题和答案。
例如:
Q1:英格兰的首都是什么?
我尝试了各种附加组件。有允许Google表格> Google表单的加载,但是没有反向加载(我可以找到),因此我认为它将是某种脚本。
任何帮助将不胜感激。
谢谢。利亚姆。
答案 0 :(得分:1)
我遇到了与您处理的几乎相同的问题,我为自己的目的用文档创建了一个小脚本,但是我认为它可以帮助您了解如何检索信息。
您需要了解以下两个API: https://developers.google.com/apps-script/reference/forms(表格)和https://developers.google.com/apps-script/reference/spreadsheet(表格)
然后,我将检查如何通过API将其发布到Google表格中。
检查是否已设置所有权限。
答案 1 :(得分:0)
似乎您需要一个Apps脚本插件或一个手动开发的Apps-Script脚本。尝试找到自由职业者或同事为您建立它。
工作表最容易使用:https://developers.google.com/apps-script/reference/spreadsheet/
答案 2 :(得分:0)
在下面的代码(我使用Apps脚本制作的代码)中,您可以找到一种方法来从Google表单中提取问题和答案,然后将值放在您选择的某个表中
// Open a form by ID.
var form = FormApp.openById('YOUR-FORM-ID');
// Open a sheet by ID.
var sheet = SpreadsheetApp.openById('YOUR-SHEET-ID').getSheets()[0];
// variables for putting the questions and answers in the right position
var question_position = 0;
var answers_position = 0;
// main function to run
function getFormValues() {
form.getItems().forEach(callback);
}
// Iterate over all questions
function callback(el){
// check if the question is multiple choice
if (el.getType() == FormApp.ItemType.MULTIPLE_CHOICE) {
// change the type from Item to MultipleChoiceItem
var question = el.asMultipleChoiceItem();
var choices = question.getChoices();
// set the title of the question in the cell
sheet.getRange(question_position +1, 1).setValue(question.getTitle());
var i = 0;
// set the answers in the right cells
for (i; i < choices.length; i++){
sheet.getRange(answers_position + 1, 2).setValue(choices[i].getValue());
answers_position++;
}
question_position += i;
answers_position++;
}
question_position++;
}
如果您想知道我在哪里得到所有这些信息,可以查看以下两个链接:
答案 3 :(得分:0)
我需要一个脚本来将一些 Google 表单转换为 GIFT Moodle 格式。我修改了@alberto-vielma 脚本以获取包含 Moodle GIFT 格式的问题和选项的电子表格。
只需将电子表格中的值复制并粘贴到文本文件中即可导入到 Moodle 中。
public class AllEncompassingFormHttpMessageConverter extends FormHttpMessageConverter {
private static final boolean jaxb2Present;
private static final boolean jackson2Present;
private static final boolean jackson2XmlPresent;
private static final boolean jackson2SmilePresent;
private static final boolean gsonPresent;
private static final boolean jsonbPresent;
static {
ClassLoader classLoader = AllEncompassingFormHttpMessageConverter.class.getClassLoader();
jaxb2Present = ClassUtils.isPresent("javax.xml.bind.Binder", classLoader);
jackson2Present = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader) &&
ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", classLoader);
jackson2XmlPresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.xml.XmlMapper", classLoader);
jackson2SmilePresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.smile.SmileFactory", classLoader);
gsonPresent = ClassUtils.isPresent("com.google.gson.Gson", classLoader);
jsonbPresent = ClassUtils.isPresent("javax.json.bind.Jsonb", classLoader);
}
public AllEncompassingFormHttpMessageConverter() {
try {
addPartConverter(new SourceHttpMessageConverter<>());
}
catch (Error err) {
// Ignore when no TransformerFactory implementation is available
}
if (jaxb2Present && !jackson2XmlPresent) {
addPartConverter(new Jaxb2RootElementHttpMessageConverter());
}
// THIS IS HERE
if (jackson2Present) {
addPartConverter(new MappingJackson2HttpMessageConverter());
}
else if (gsonPresent) {
addPartConverter(new GsonHttpMessageConverter());
}
else if (jsonbPresent) {
addPartConverter(new JsonbHttpMessageConverter());
}
if (jackson2XmlPresent) {
addPartConverter(new MappingJackson2XmlHttpMessageConverter());
}
if (jackson2SmilePresent) {
addPartConverter(new MappingJackson2SmileHttpMessageConverter());
}
}
}