2021年10月29日 星期五
2021年10月12日 星期二
2021年9月30日 星期四
2021年9月28日 星期二
Indexing of all matches (JavaScript Google Doc App Scripts)
function indexingAllMatches() {
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var re = /[3012]/g; // regular expression
var str = body.getChild(0).asText().getText();
// str = "The 1author lives 2in Iowa, 1USA."
while ((match = re.exec(str)) != null) {
Logger.log("match found at " + match.index);
}
// expected return = 4,18,28
}
2021年9月24日 星期五
2021年9月19日 星期日
2021年9月15日 星期三
2021年9月9日 星期四
2021年8月29日 星期日
2021年8月24日 星期二
Chapter 13 Adding different types of questions to a 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(data){
if(data[1] === "text"){
makeTextQ(data);
}
else if(data[1] === "date"){
makeDateQ(data);
}
else if(data[1] === "duration"){
makeDurationQ(data);
}
else if(data[1] === "multiplec"){
makeMultipleCQ(data);
}
else if(data[1] === "list"){
makeListQ(data);
}
else if(data[1] === "scale"){
makeScaleQ(data);
}
else if(data[1] === "checkbox"){
makeCheckboxQ(data);
}
else if(data[1] === "grid"){
makeGridQ(data);
}
else if(data[1] === "paragraph"){
makeParagraphQ(data);
}
}
////Functions to make different types of
questions
//Make text question
function makeTextQ(data){
let
text = data[2];
let
item = FORM.addTextItem();
item.setTitle(text);
}
//Make date question
function makeDateQ(data){
let
date = data[2];
let
item = FORM.addDateItem();
item.setTitle(date);
item.setRequired(true);
}
//make duration question
function makeDurationQ(data){
let
duration = data[2];
let
item = FORM.addDurationItem();
item.setTitle(duration);
}
//make Multiple-Choice question
function makeMultipleCQ(data){
let
mcQuestion = data[2];
let
item = FORM.addMultipleChoiceItem();
item.setTitle(mcQuestion);
Logger.log(data);
//Getting options
let
trimmedData = data.filter(function(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(data){
let
listQuestion = data[2];
let
item = FORM.addListItem();
item.setTitle(listQuestion);
let
trimmedData = data.filter(function(str) {
return /\S/.test(str);
});
let
slicedData = trimmedData.slice(3,trimmedData.length);
item.setChoiceValues(slicedData);
}
//make Scale question
function makeScaleQ(data){
let
scaleQ = data[2];
let
item = FORM.addScaleItem();
item.setTitle(scaleQ);
let
trimmedData = data.filter(function(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(data){
let
checkboxQ = data[2];
let
item = FORM.addCheckboxItem();
item.setTitle(checkboxQ);
let
trimmedData = data.filter(function(str) {
return /\S/.test(str);
});
let
slicedData = trimmedData.slice(3,trimmedData.length);
item.setChoiceValues(slicedData);
}
//make Grid question
function makeGridQ(data){
let
gridQ = data[2];
let
item = FORM.addGridItem();
item.setTitle(gridQ);
let
trimmedData = data.filter(function(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(data){
let
paragraphText = data[2];
let
item = FORM.addParagraphTextItem();
item.setTitle(paragraphText);
}




















