Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save phillypb/2e1783cbc08e04b8b296807437a5172d to your computer and use it in GitHub Desktop.

Select an option

Save phillypb/2e1783cbc08e04b8b296807437a5172d to your computer and use it in GitHub Desktop.
function createStudentDocs() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.toast('Starting to create Student Docs');
var configSheet = ss.getSheetByName('Config');
var groupSheet = ss.getSheetByName('Group Feedback');
var groupNumRows = groupSheet.getLastRow();
var groupSheetData = groupSheet.getDataRange().getValues();
Logger.log('Student Name is: ' + groupSheetData[2][1]);
Logger.log('Tutor 1 name is: ' + groupSheetData[0][2]);
Logger.log('Tutor 2 name is: ' + groupSheetData[0][6]);
// get Master Google Sheet to write back new Google Doc link
var masterFileID = configSheet.getRange(4, 2).getValue();
var masterFile = SpreadsheetApp.openById(masterFileID).getSheetByName('Students');
var masterStudents = masterFile.getDataRange().getValues();
var masterNumRows = masterFile.getLastRow();
// split filename to get Group ID for naming folder
var fileName = ss.getName();
var fileName = fileName.split(' ');
var fileNameID = fileName[0];
Logger.log('Group ID from filename is: ' + fileNameID);
// get Groups folder ID and create new folder inside
var groupsFolderID = configSheet.getRange(2, 2).getValue();
var termTime = configSheet.getRange(5, 2).getValue();
var newGroupFolder = DriveApp.getFolderById(groupsFolderID).createFolder(fileNameID + ' Student Feedback Files' + ' - ' + termTime);
var newFolderID = newGroupFolder.getId();
Logger.log('Newly created folder ID is: ' + newFolderID);
// loop through each student and create Google Doc ****************************************************************
for (var i=2; i<groupNumRows; i++) {
// create copy of template Doc
var templateDocID = configSheet.getRange(3, 2).getValue();
var destinationFolder = DriveApp.getFolderById(newFolderID);
var sheetName = fileNameID + ' ' + groupSheetData[i][1] + ' Student Feedback';
var templateDocCopyURL = DriveApp.getFileById(templateDocID).makeCopy(sheetName, destinationFolder).getUrl();
// ******************************* edit document *******************************
var newDoc = DocumentApp.openByUrl(templateDocCopyURL);
var docBody = newDoc.getBody();
// edit doc tags
docBody.replaceText('<<name>>', groupSheetData[i][1]);
docBody.replaceText('<<email>>', groupSheetData[i][0]);
docBody.replaceText('<<tutor1>>', groupSheetData[0][2]);
docBody.replaceText('<<attendance1>>', groupSheetData[i][2]);
docBody.replaceText('<<contribution1>>', groupSheetData[i][3]);
docBody.replaceText('<<attitude1>>', groupSheetData[i][4]);
docBody.replaceText('<<comment1>>', groupSheetData[i][5]);
docBody.replaceText('<<tutor2>>', groupSheetData[0][6]);
docBody.replaceText('<<attendance2>>', groupSheetData[i][6]);
docBody.replaceText('<<contribution2>>', groupSheetData[i][7]);
docBody.replaceText('<<attitude2>>', groupSheetData[i][8]);
docBody.replaceText('<<comment2>>', groupSheetData[i][9]);
// ************************** end of edit documents ****************************
// write newly created DOC link to Group Google Sheet
groupSheet.getRange(i+1, 12).setFormula('=HYPERLINK("' + templateDocCopyURL + '","' + sheetName + '")');
// write newly created DOC link to Master Google Sheet
for (var j=1; j<masterNumRows; j++) {
if (groupSheetData[i][0] == masterStudents[j][0]) {
Logger.log(groupSheetData[i][0] + ' matches ' + masterStudents[j][0]);
masterFile.getRange(j+1, 5).setFormula('=HYPERLINK("' + templateDocCopyURL + '","' + sheetName + '")');
}
}
ss.toast('Doc created for: ' + groupSheetData[i][1]);
}// end of loop through each student and create Google Doc *********************************************************
ss.toast('Creating Docs complete');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment