thwippp
11/14/2017 - 7:17 PM

Backup of upDateFormBasedOnRoster

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;
}