My click bait titles are so powerful!
This isn’t anything special but it does show a couple of Google Script patterns that we reuse all the time. Folders are made in other folders! Documents are made in those folders. Things are shared. Ownership is assigned! So many things.
The following script takes a form submission and then . . .
- makes a folder in a particular folder, shares it with particular people, sets the ownership
- makes a document within that sub-folder, shares it with particular people, sets the ownership
- adds them as a viewer on a different folder
- deals with some issues VCU has with students having both @vcu.edu and @mymail.vcu.edu email addresses but without them behaving as if they are the same in Google
Details are in the comments. The trigger is on form submission.
function onFormSubmission(){ var sheet = SpreadsheetApp.getActiveSheet();//get the sheet where we are writing the form data var rows = sheet.getDataRange();//get the entries var lastRow = rows.getLastRow();//get the most recent entry var email = sheet.getRange(lastRow,5).getValue();//get the email column var atSymbol = email.search('@');//find the @ symbol in the email var cleanEmail = email.substring(0,atSymbol) //chop off the first portion of the email var lastName = sheet.getRange(lastRow,3).getValue();//get their last name from the SS addStudentToResourceFolder(cleanEmail); makeStudentFolder(cleanEmail, lastName); } function addStudentToResourceFolder(emailClean){ var id = 'YOUR_FOLDER_ID';//base resource folder id var folder = DriveApp.getFolderById(id);//get that folder folder.addViewers([emailClean + '@vcu.edu', emailClean + '@mymail.vcu.edu']);//add student email versions as viewer } function makeStudentFolder(emailClean, lastName){ var holderId = '18KRAbz6ag3v5IiCc31Acs7pkz076Vds1';//get the top level holder folder var draftId = createFolderBasic(holderId, lastName+'_Essay Drafts');//create new sub folder var draftFolder = DriveApp.getFolderById(draftId);//get that sub folder draftFolder.setOwner('SOMEONE@vcu.edu');//set the owner to someone who is not me draftFolder.addEditors([emailClean + '@vcu.edu', emailClean + '@mymail.vcu.edu']);//add student as editor var document = DocumentApp.create(lastName +' essay draft'); //create document DriveApp.getFileById(document.getId()).addEditors([emailClean + '@vcu.edu', emailClean + '@mymail.vcu.edu']); //add editors DriveApp.getFolderById(draftId).addFile( DriveApp.getFileById(document.getId()) );//put doc in folder DriveApp.getFileById(document.getId()).setOwner('SOMEONE@vcu.edu');//set the owner of teh doc } function createFolderBasic(folderID, folderName) { var folder = DriveApp.getFolderById(folderID); var newFolder = folder.createFolder(folderName); return newFolder.getId(); };