我为我们的销售同事准备了Google表单,可以让他们选择他们的姓名,他们负责的国家,然后回答几个问题(这些问题总是相同的)。根据Google Apps脚本中的答案创建表单问题
名称列表和关联的国家被保存在电子表格中。我使用这个列表来填充名称的ListItem和每个同事的国家列表ListItem。
目前我有一个欢迎页面有两个ListItems:名称和产品。 选择一个名称并点击“继续”后,表格跳转到相应的页面,其中国家ListItem已经预先填好了国家。
我的问题是,这种方式我一直有一个非常长的形式,虽然用户只看到两页。此外,所分配的工作表对每个问题都有一个单独的列。
是否有可能基于所选名称“即时”生成第二页?
更新:
这是我的createFrom功能。通过传递所选名称来生成questionBlock“按需”会很好,或者至少设置生成的问题以保存对电子表格中同一列的响应。
function createForm() {
//Names
var Names = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'];
var fullNames = ['Mr. Z A', 'Mr. Y B', 'Mr. X C', 'Ms. W D', 'Mr. V E', 'Ms. U F', 'Mr. T G', 'Mr. S H', 'Mr. R I', 'Mr. Q J'];
var Products = ['Product 1', 'Product 2'];
var questionBlock = {};
var form = FormApp.create('Vertriebsländer und Zulassungsplan 2015');
//Page 1
form.setTitle('formTitle')
.setDescription('Please fill out the following survey.');
form.hasRespondAgainLink();
form.canEditResponse();
var lName = form.addListItem()
.setTitle('Please choose your name:')
.setRequired(true);
var choicesName = lName.getChoices();
choicesName = [];
var lProduct = form.addListItem()
.setChoiceValues(Products)
.setTitle('Please choose the product:')
.setRequired(true);
//Question Block Page
for(a = 0; a < Names.length; a++){
choicesName.push(
lName.createChoice(fullNames[a],
form.addPageBreakItem()
.setTitle('Welcome ' + fullNames[a] +'!')
.setGoToPage(FormApp.PageNavigationType.SUBMIT)));
questionBlock[ ('lCountries' + Names[a]) ] = form.addListItem();
questionBlock[ ('lCountries' + Names[a]) ].setTitle('Please choose a country:');
questionBlock[ ('lCountries' + Names[a]) ].setRequired(true);
questionBlock[('txtQuestion1')] = form.addTextItem();
questionBlock[('txtQuestion1')].setTitle('Common Question 1');
questionBlock[('txtQuestion1')].setRequired(true);
questionBlock[('lQuestion2')] = form.addListItem();
questionBlock[('lQuestion2')].setTitle('Question2');
questionBlock[('lQuestion2')].setChoiceValues(['A', 'B', 'C']);
questionBlock[('lQuestion2')].setRequired(true);
questionBlock[('lQuestion3')] = form.addListItem();
questionBlock[('lQuestion3')].setTitle('Question3');
questionBlock[('lQuestion3')].setChoiceValues(['A', 'B', 'C', 'D']);
questionBlock[('lQuestion3')].setRequired(true);
questionBlock[('txtQuestion4')] = form.addTextItem();
questionBlock[('txtQuestion4')].setTitle('Do you have any remarks?');
questionBlock[('txtQuestion4')].setRequired(false);
}
lName.setChoices(choicesName);
//Fill country selection dropdown==================
//Spreadsheet
var ssCountries = SpreadsheetApp.openById('abcdefghijklmnopqrstuvwxyz1234567890');
//Importing data from spreadsheet
var dataRange = ssCountries.getDataRange();
var values = dataRange.getValues();
for (i = 0; i < Names.length; i++)
{
choices = questionBlock[ ('lCountries' + Names[i]) ].getChoices();
choices = [];
for (j = 0; j < values[0].length; j++)
{
var curr_name = values[0][j];
if (curr_name == Names[i])
{
for (k = 1; k < values.length; k++)
{
if (values[k][j].toString().length > 0)
{
choices.push(questionBlock[ ('lCountries' + Names[i]) ].createChoice(values[k][j]));
questionBlock[ ('lCountries' + Names[i]) ].setChoices(choices);
}
}
}
}
}
//Country selection dropdown filled==================
}
请发布一些你曾经工作过的代码。 – KRR 2015-01-15 17:11:33
我编辑了最初的queston以包含源代码。我想使用getItemResponds,但我无法真正弄清楚如何调试它,因为它在调试时总是空的。 (但也许我只是不明白这整个getResponses的东西) – 2015-01-17 09:04:04