Jump to content

(?) Google Form & Drive - how to change name of document upload automatically


Recommended Posts

Posted

I'm looking at trying to automate a few things at the moment, now i'm looking at when staff upload training certificates to Google Drive via Google Forms - you know all that mandatory training that we need to do.

 

I've got a few ideas going round my head but to start with, i'm looking at this script (https://developers.google.com/apps-script/samples/automations/upload-files) so we can ask staff to upload files to different folders via one form, this would be used instead of one form with lots of "file upload" questions - i'm not sure which will be easier at the moment until i've tested my options.

 

Then, i'm hoping that we integrate this process (https://medium.com/@yashashreepatel/how-to-rename-google-forms-responses-in-the-google-drive-automatically-94f033d90b24) into the mix but i feel i may need an IF function depending on which folder is chosen - and tat's where i need some help but first of all i need to get this script working without adding something else into the mix.

 

I'm hoping to build the file name of the uploaded document with COURSE NAME - NAME OF STAFF MEMBER - UPLOADDATE / DATE ON CERTiFICATE (this would be a question on the form).

 

Really, i'm posting this to see if anyone else is doing anything like this before i start re-inventing the wheel.

Posted (edited)

After studying what is going on with one of the scripts, i have something that might work for us, it's not 100% perfect but it will do.

 

There is one thing i cannot get my head around though, that's the line for (var i = 0; i < formResponses.length; i++). Why do i need to change the var i = 0 to var i = 11 (or another value) because numbers 1, 2, 3, 4, 5 etc don't work? I've got one script up at 8, a few up at 11 and I think one of the scripts is up to var i = 14 for some reason?

 

function FILE1Upload() {
var form = FormApp.openById('FORM_ID'); //DDD
var formResponses = form.getResponses();
var baseString = 'https://drive.google.com/file/d/';
var endString = '/view?usp=drivesdk';
var title = form.getTitle();
console.log(itemResponses)
 
var folder = DriveApp.getFolderById('DRIVE_FOLDER_ID');
var files = folder.getFiles();

 while (files.hasNext()) {
   var file = files.next();
   for (var i = 0; i < formResponses.length; i++) {
     var formResponse = formResponses[i];
     var itemResponses = formResponse.getItemResponses();
     var itemResponseFirstName = itemResponses[0];
     var itemResponseLastName = itemResponses[1];
     var itemResponseCertificate = itemResponses[2];
     var itemResponseFileuploadDate = itemResponses[3];
     var itemResponseFile = itemResponses[4];

     var fileID = itemResponseFile.getResponse();
     var newName = itemResponseFirstName.getResponse() + " " + itemResponseLastName.getResponse() + " - " + itemResponseCertificate.getResponse() + " - " + itemResponseFileuploadDate.getResponse();
     var url = baseString + fileID + endString;
     var urlCheck = file.getUrl();
     if ( url == urlCheck) {
       var modName = newName;
       file.setName(modName);
     }
   }
 }
}

 

function FILE2Upload() {
var form = FormApp.openById('FORM_ID'); //DDD
var formResponses = form.getResponses();
var baseString = 'https://drive.google.com/file/d/';
var endString = '/view?usp=drivesdk';
var title = form.getTitle();
console.log(itemResponses)
 
var folder = DriveApp.getFolderById('DRIVE_FOLDER_ID');
var files = folder.getFiles();

 while (files.hasNext()) {
   var file = files.next();
   for (var i = 11; i < formResponses.length; i++) {
     var formResponse = formResponses[i];
     var itemResponses = formResponse.getItemResponses();
     var itemResponseFirstName = itemResponses[0];
     var itemResponseLastName = itemResponses[1];
     var itemResponseCertificate = itemResponses[5];
     var itemResponseFileuploadDate = itemResponses[6];
     var itemResponseFile = itemResponses[7];

     var fileID = itemResponseFile.getResponse();
     var newName = itemResponseFirstName.getResponse() + " " + itemResponseLastName.getResponse() + " - " + itemResponseCertificate.getResponse() + " - " + itemResponseFileuploadDate.getResponse();
     var url = baseString + fileID + endString;
     var urlCheck = file.getUrl();
     if ( url == urlCheck) {
       var modName = newName;
       file.setName(modName);
     }
   }
 }
}

Edited by timbo343
Posted
After studying what is going on with one of the scripts, i have something that might work for us, it's not 100% perfect but it will do.

 

There is one thing i cannot get my head around though, that's the line for (var i = 0; i < formResponses.length; i++). Why do i need to change the var i = 0 to var i = 11 (or another value) because numbers 1, 2, 3, 4, 5 etc don't work? I've got one script up at 8, a few up at 11 and I think one of the scripts is up to var i = 14 for some reason?

 

function FILE1Upload() {
var form = FormApp.openById('FORM_ID'); //DDD
var formResponses = form.getResponses();
var baseString = 'https://drive.google.com/file/d/';
var endString = '/view?usp=drivesdk';
var title = form.getTitle();
console.log(itemResponses)
 
var folder = DriveApp.getFolderById('DRIVE_FOLDER_ID');
var files = folder.getFiles();

 while (files.hasNext()) {
   var file = files.next();
   for (var i = 0; i < formResponses.length; i++) {
     var formResponse = formResponses[i];
     var itemResponses = formResponse.getItemResponses();
     var itemResponseFirstName = itemResponses[0];
     var itemResponseLastName = itemResponses[1];
     var itemResponseCertificate = itemResponses[2];
     var itemResponseFileuploadDate = itemResponses[3];
     var itemResponseFile = itemResponses[4];

     var fileID = itemResponseFile.getResponse();
     var newName = itemResponseFirstName.getResponse() + " " + itemResponseLastName.getResponse() + " - " + itemResponseCertificate.getResponse() + " - " + itemResponseFileuploadDate.getResponse();
     var url = baseString + fileID + endString;
     var urlCheck = file.getUrl();
     if ( url == urlCheck) {
       var modName = newName;
       file.setName(modName);
     }
   }
 }
}

 

function FILE2Upload() {
var form = FormApp.openById('FORM_ID'); //DDD
var formResponses = form.getResponses();
var baseString = 'https://drive.google.com/file/d/';
var endString = '/view?usp=drivesdk';
var title = form.getTitle();
console.log(itemResponses)
 
var folder = DriveApp.getFolderById('DRIVE_FOLDER_ID');
var files = folder.getFiles();

 while (files.hasNext()) {
   var file = files.next();
   for (var i = 11; i < formResponses.length; i++) {
     var formResponse = formResponses[i];
     var itemResponses = formResponse.getItemResponses();
     var itemResponseFirstName = itemResponses[0];
     var itemResponseLastName = itemResponses[1];
     var itemResponseCertificate = itemResponses[5];
     var itemResponseFileuploadDate = itemResponses[6];
     var itemResponseFile = itemResponses[7];

     var fileID = itemResponseFile.getResponse();
     var newName = itemResponseFirstName.getResponse() + " " + itemResponseLastName.getResponse() + " - " + itemResponseCertificate.getResponse() + " - " + itemResponseFileuploadDate.getResponse();
     var url = baseString + fileID + endString;
     var urlCheck = file.getUrl();
     if ( url == urlCheck) {
       var modName = newName;
       file.setName(modName);
     }
   }
 }
}

 

Perhaps some of the first responses are no longer present because they were just test responses that have since been deleted.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...