Last active
December 31, 2018 14:03
-
-
Save phillypb/187700cd515a2abbc6452dccce92d13e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function createGroupSheets() { | |
// get relevant Sheets | |
var ss = SpreadsheetApp.getActiveSpreadsheet(); | |
var studentSheet = ss.getSheetByName('Students'); | |
var studentSheetName = studentSheet.getSheetName(); | |
var studentSheetValues = studentSheet.getDataRange().getValues(); | |
var studentLastRow = studentSheet.getLastRow(); | |
var groupSheet = ss.getSheetByName('Groups'); | |
var groupSheetValues = groupSheet.getDataRange().getValues(); | |
var groupLastRow = groupSheet.getLastRow(); | |
var configSheetValues = ss.getSheetByName('Config').getDataRange().getValues(); | |
Logger.log('Feedback Folder ID is ' + configSheetValues[1][1]); | |
Logger.log('Feedback Sheet Template ID is ' + configSheetValues[2][1]); | |
// get relevant File/Folder | |
var sheetTemplate = DriveApp.getFileById(configSheetValues[2][1]); | |
var folderTemplate = DriveApp.getFolderById(configSheetValues[1][1]); | |
ss.toast('Creating Group Sheets'); | |
// loop through each Group ID ************************************************************************************ | |
for (var i=1;i<groupLastRow;i++) { | |
// get Group ID | |
var groupID = groupSheetValues[i][0]; | |
// get Group File Link (should be blank) | |
var groupFileLink = groupSheetValues[i][3]; | |
// check Group ID not blank and Group File Link is (otherwise file may already exist) | |
if (groupID != '' && groupFileLink == '') { | |
Logger.log('Group ID is ' + groupID); | |
// copy Template Sheet for new Group | |
var sheetName = groupID + ': Student Feedback' + ' - ' + configSheetValues[3][1]; | |
var templateCopy = sheetTemplate.makeCopy(sheetName, folderTemplate); | |
var templateCopyURL = templateCopy.getUrl(); | |
// write Sheet URL to Groups sheet | |
groupSheet.getRange(i+1, 4).setFormula('=HYPERLINK("' + templateCopyURL + '","' + sheetName + '")'); | |
// loop through each student looking for Group ID ************************************************************* | |
var students = [] // create empty array to push student details into | |
for (var j=1;j<studentLastRow;j++) { | |
if (studentSheetValues[j][3] == groupID) { // check Students "Group ID" column matches | |
var studentName = studentSheetValues[j][1] + ' ' + studentSheetValues[j][2]; // concatenate first+last name | |
students.push(studentName); // add details to array | |
var studentEmail = studentSheetValues[j][0]; | |
students.push(studentEmail); | |
} | |
} // end of loop through each student looking for Group ID **************************************************** | |
// open newly created Sheet to add relevant details | |
var newSheet = SpreadsheetApp.openByUrl(templateCopyURL).getSheetByName('Group Feedback'); | |
// loop through each student in array and append details to new Sheet ***************************************** | |
for (var k=0;k<students.length;k+=2) { | |
var lastRow = newSheet.getLastRow(); | |
newSheet.getRange(lastRow+1, 1).setValue(students[k+1]); // append to last row | |
newSheet.getRange(lastRow+1, 2).setValue(students[k]); | |
} // end of loop through each student in array and append details to new Sheet ******************************** | |
ss.toast('Group Sheet made for ' + groupID); | |
} // end of check Group ID not blank and Group File Link is (otherwise file may already exist) | |
else { | |
Logger.log('Group ID is blank or Group File Link may not be'); | |
} | |
} // end of loop through each Group ID **************************************************************************** | |
ss.toast('Task completed'); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment