Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save barrieroberts/0005b9f76d92bec8d4d599911a3d0956 to your computer and use it in GitHub Desktop.

Select an option

Save barrieroberts/0005b9f76d92bec8d4d599911a3d0956 to your computer and use it in GitHub Desktop.
13-Adding different types of questions to a Google Form
//Create new form - Global variable so it can be seen by all functions
const FORM = FormApp.create("Questionnaire");
function makeQuestionnaire() {
//Get data and last row from spreadsheet
const sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
const data = sh.getDataRange().getValues();
//Loop through each question and check what question type it is
data.forEach(checkQuestionType)
}
//function to check question type
function checkQuestionType(rowData) {
let qType = rowData[1];
if (qType === "text") {
makeTextQ(rowData);
}
else if (qType === "date") {
makeDateQ(rowData);
}
else if (qType === "duration") {
makeDurationQ(rowData);
}
else if (qType === "multiplec") {
makeMultipleCQ(rowData);
}
else if (qType === "list") {
makeListQ(rowData);
}
else if (qType === "scale") {
makeScaleQ(rowData);
}
else if (qType === "checkbox") {
makeCheckboxQ(rowData);
}
else if (qType === "grid") {
makeGridQ(rowData);
}
else if (qType === "paragraph") {
makeParagraphQ(rowData);
}
}
////Functions to make different types of questions
//Make text question
function makeTextQ(rowData) {
let text = rowData[2];
let item = FORM.addTextItem();
item.setTitle(text);
}
//Make date question
function makeDateQ(rowData) {
let date = rowData[2];
let item = FORM.addDateItem();
item.setTitle(date);
item.setRequired(true);
}
//make duration question
function makeDurationQ(rowData) {
let duration = rowData[2];
let item = FORM.addDurationItem();
item.setTitle(duration);
}
//make Multiple-Choice question
function makeMultipleCQ(rowData) {
let mcQuestion = rowData[2];
let item = FORM.addMultipleChoiceItem();
item.setTitle(mcQuestion);
//Getting options
let trimmedData = rowData.filter((str) => {
return /\S/.test(str);
});
//Getting options without spaces
let slicedData = trimmedData.slice(3, trimmedData.length);
//Adding option to form
item.setChoiceValues(slicedData);
}
//make List question
function makeListQ(rowData) {
let listQuestion = rowData[2];
let item = FORM.addListItem();
item.setTitle(listQuestion);
let trimmedData = rowData.filter((str) => {
return /\S/.test(str);
});
let slicedData = trimmedData.slice(3, trimmedData.length);
item.setChoiceValues(slicedData);
}
//make Scale question
function makeScaleQ(rowData) {
let scaleQ = rowData[2];
let item = FORM.addScaleItem();
item.setTitle(scaleQ);
let trimmedData = rowData.filter((str) => {
return /\S/.test(str);
});
//Get and set lower and upper bounds of scale
let lower = trimmedData.slice(3, 4);
let upper = trimmedData.slice(4, 5);
item.setBounds(lower, upper);
//Set labels to lower and upper bounds
item.setLabels(trimmedData.slice(5, 6), trimmedData.slice(6, 7));
}
//make Checkbox question
function makeCheckboxQ(rowData) {
let checkboxQ = rowData[2];
let item = FORM.addCheckboxItem();
item.setTitle(checkboxQ);
let trimmedData = rowData.filter((str) => {
return /\S/.test(str);
});
let slicedData = trimmedData.slice(3, trimmedData.length);
item.setChoiceValues(slicedData);
}
//make Grid question
function makeGridQ(rowData) {
let gridQ = rowData[2];
let item = FORM.addGridItem();
item.setTitle(gridQ);
let trimmedData = rowData.filter((str) => {
return /\S/.test(str);
});
//Find where "Columns:" text is in array
let columnPosition = trimmedData.indexOf("Columns:");
//Get row values for grid
let slicedDataRows = trimmedData.slice(3, columnPosition);
//Get column values for grid
let slicedDataColumns = trimmedData.slice(columnPosition + 1, trimmedData.length);
item.setRows(slicedDataRows);
item.setColumns(slicedDataColumns);
}
//make Paragraph question
function makeParagraphQ(rowData) {
let paragraphText = rowData[2];
let item = FORM.addParagraphTextItem();
item.setTitle(paragraphText);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment