Backup of a way to update a given form based on the teacher and student information already in the form and on a setUpSheet It merges the two of them
/*
* UPDATES FORM FROM ROSTER
- Get array from roster for teacher, student, grade
- Get array from form for teacher, student, grade
- Compare, splice two lists (update form)
* Update testSheet
* Run Prefill Urls
*
*/
function updateFormFromRosterOLD(){
// Sheet /////////////////////////////////////////////////////////////////////////////////
var ss = SpreadsheetApp.getActiveSpreadsheet();
var responseSheet = ss.getSheetByName("Form Responses 1");
// setUpSheet
var setUpSheet = ss.getSheetByName("setUpSheet");
var setUpSheetLastRow = setUpSheet.getLastRow();
var setUpSheetData = setUpSheet.getDataRange().getValues();
var setUpSheetHeaders = setUpSheetData[0];
var setUpSheetTeacherIndex = setUpSheetHeaders.indexOf("Teacher");
var setUpSheetStudentIndex = setUpSheetHeaders.indexOf("Student");
var setUpSheetGradeIndex = setUpSheetHeaders.indexOf("Grade");
// testSheet
var testSheet = ss.getSheetByName("testSheet");
var testSheetData = testSheet.getDataRange().getValues(); // gets all the values of the dataRange
var testSheetHeaders = testSheetData[0]; // gets the header row
var testSheetLastRow = testSheet.getLastRow();
var testSheetTeacherIndex = testSheetHeaders.indexOf("Teacher");
var testSheetStudentIndex = testSheetHeaders.indexOf("Student");
var testSheetGradeIndex = testSheetHeaders.indexOf("Grade");
// requiredSectionSheet
var requiredSectionSheet = ss.getSheetByName("requiredSectionSheet");
var requiredSectionSheetLastRow = requiredSectionSheet.getLastRow();
var requiredSectionSheetData = requiredSectionSheet.getDataRange().getValues();
var requiredSectionSheetHeaders = requiredSectionSheetData[0];
var requiredSectionSheetTeacherIndex = requiredSectionSheetHeaders.indexOf("Teacher");
var requiredSectionSheetStudentIndex = requiredSectionSheetHeaders.indexOf("Student");
var requiredSectionSheetGradeIndex = requiredSectionSheetHeaders.indexOf("Grade");
///// Sheet Arrays /////////////////////////////////////////////////////////////////////////////////
var setUpSheetTeacherArray = [];
var setUpSheetStudentArray = [];
var setUpSheetGradeArray = [];
for (var x = 0; x < setUpSheetLastRow; x++) {
setUpSheetTeacherArray.push(setUpSheetData[x][setUpSheetTeacherIndex]);
setUpSheetStudentArray.push(setUpSheetData[x][setUpSheetStudentIndex]);
setUpSheetGradeArray.push(setUpSheetData[x][setUpSheetGradeIndex].toString());
}
for (var x = 0; x < 3; x++) {
setUpSheetTeacherArray.splice(0,1);
}
// Form /////////////////////////////////////////////////////////////////////////////////
var formUrl = SpreadsheetApp.getActiveSpreadsheet().getFormUrl(); // gets the form URL that is attached to the spreadsheet
var formId = FormApp.openByUrl(formUrl).getId(); // gets the id of the form
var form = FormApp.openById(formId); // opens the form based on its id
var formLength = FormApp.openById(formId).getItems().length;
var formItemTitleArray = [];
var formItemTypeArray= [];
for (var x = 0; x < formLength; x++) {
formItemTitleArray.push(FormApp.openById(formId).getItems()[x].getTitle());
formItemTypeArray.push(FormApp.openById(formId).getItems()[x].getType());
}
var formItemTeacherIndex = formItemTitleArray.indexOf("Teacher");
var formItemStudentIndex = formItemTitleArray.indexOf("Student");
// var formItemGradeIndex = formItemTitleArray.indexOf("Grade");
var formItemTeacherLength = form.getItems()[formItemTeacherIndex].asListItem().getChoices().length;
var formItemStudentLength = form.getItems()[formItemStudentIndex].asListItem().getChoices().length;
// var formItemGradeLength = form.getItems()[formItemGradeIndex].asListItem().getChoices().length;
// Form Arrays /////////////////////////////////////////////////////////////////////////////////
var formTeacherArray = [];
var formStudentArray = [];
// var formGradeArray = []; //modified 11/13
for (var x = 0; x < formItemTeacherLength; x++) {
formTeacherArray.push(form.getItems()[formItemTeacherIndex].asListItem().getChoices()[x].getValue());
}
for (var x = 0; x < formItemStudentLength; x++) {
formStudentArray.push(form.getItems()[formItemStudentIndex].asListItem().getChoices()[x].getValue());
}
// for (var x = 0; x < formItemGradeLength; x++) {
// formGradeArray.push(form.getItems()[formItemGradeIndex].asListItem().getChoices()[x].getValue().toString());
// }
var mergedTeacherArray = arrayUnique(setUpSheetTeacherArray.concat(formTeacherArray));
var updatedTeacherChoices = FormApp.openById(formId).getItems()[0].asListItem().setChoiceValues(mergedTeacherArray);
for (var x = 0; x < setUpSheetLastRow-1; x++) {
testSheet.getRange(x+2,testSheetTeacherIndex+1).setValue(setUpSheetTeacherArray[x]);
requiredSectionSheet.getRange(x+2,requiredSectionSheetTeacherIndex+1).setValue(setUpSheetTeacherArray[x]);
}
var mergedStudentArray = arrayUnique(setUpSheetStudentArray.concat(formStudentArray));
var updatedStudentChoices = FormApp.openById(formId).getItems()[1].asListItem().setChoiceValues(mergedStudentArray);
for (var x = 0; x < setUpSheetLastRow-1; x++) {
testSheet.getRange(x+2,testSheetStudentIndex+1).setValue(setUpSheetStudentArray[x]);
requiredSectionSheet.getRange(x+2,requiredSectionSheetStudentIndex+1).setValue(setUpSheetStudentArray[x]);
}
// var mergedGradeArray = arrayUnique(setUpSheetGradeArray.concat(formGradeArray));
// var updatedGradeChoices = FormApp.openById(formId).getItems()[2].asListItem().setChoiceValues(mergedGradeArray);
// 11/13
// for (var x = 0; x < setUpSheetLastRow-1; x++) {
// testSheet.getRange(x+2,testSheetGradeIndex+1).setValue(setUpSheetGradeArray[x]);
// requiredSectionSheet.getRange(x+2,requiredSectionSheetGradeIndex+1).setValue(setUpSheetGradeArray[x]);
// }
}
// Merges (concat) 2 arrays and cuts out the duplicates
function arrayUnique(array) {
var a = array.concat();
for(var i=0; i<a.length; ++i) {
for(var j=i+1; j<a.length; ++j) {
if(a[i] === a[j])
a.splice(j--, 1);
}
}
return a;
}