David Wheatley
David Wheatley

Reputation: 3

Why won't the makeCopy portion of my script execute properly in Google Apps Script?

I am a very novice coder and am trying to accomplish the following using a Google Form:

  1. Rename file uploaded by user based on name defined by combination of form fields
  2. Create a copy of the uploaded file to a specific folder in GDrive, based on answer to particular form question

So far, I have managed to get Part 1 working, but Part 2 doesn't seem to function properly (no error message, just no action). Anyone able to guide me where I'm going wrong?

function fileRename() {
  var form = FormApp.getActiveForm()
// returns the total number of form submissions
  var length=form.getResponses().length;
//retrieve fileID of document uploaded by user in Question 6 of the form (i.e. Index 5)
  var id=form.getResponses()[length-1].getItemResponses()[5].getResponse();
//getResponses()[length-1] retrieves the last form response, accounting for the fact that the first index is zero and hte last length-1
//gets the form answers used to concatenate the file name
  var fileUploadEntity=form.getResponses()[length-1].getItemResponses()[0].getResponse();
  var fileUploadDate=form.getResponses()[length-1].getItemResponses()[3].getResponse();
  var fileUploadType=form.getResponses()[length-1].getItemResponses()[1].getResponse();
//accesses the uploaded file
  var file=DriveApp.getFileById(id);
  var name = file.getName();
//changes the file name
  var name = fileUploadEntity+'_'+fileUploadDate+'_'+fileUploadType
  file.setName(name);
  
//creates a copy and saves it to the relevant regional shared drive depending on which array the entity belongs to, using its four-letter identifier 
  
  var APAC = ["WRAU", "WRNZ", "WRSG", "WRMY", "WRHK"];
  var NORAM = ["WRCA", "WRCC", "WRCW", "WRUS"];
  var MEA = ["WRKE", "WRUG", "WRSO", "WRSA", "WRRW", "WRTZ", "WRZW"];
  var LATAM = ["WRMX"];
  var EEA = ["WRBE", "WRUK"];
  
  var folderAPAC = DriveApp.getFolderById('1IKIDSEEGHf802WaF4l4ntN9uiUO5jJpa');
  var folderNORAM = DriveApp.getFolderById('1BitldN3Uw7453wxnnI1X5PUmbmTiQn5O'); 
  var folderMEA = DriveApp.getFolderById('18tWR1C-mdO7moAtktOHJsvXjx_V0kdg0');
  var folderLATAM = DriveApp.getFolderById('1cG0iPocn3KyXK8XgaxnZNWVU-HKJ97dX');
  var folderEEA = DriveApp.getFolderById('1N8tB8AjMkR7gRarcwd4NYmry_wh0WVkY');

  if (fileUploadEntity.indexOf(APAC)>-1) { 
 file.makeCopy(name, folderAPAC);
  }
  
  else if (fileUploadEntity.indexOf(NORAM)>-1) {
 file.makeCopy(name, folderNORAM);
  }
  
  else if (fileUploadEntity.indexOf(LATAM)>-1) { 
 file.makeCopy(name, folderLATAM);
  }
  
  else if (fileUploadEntity.indexOf(MEA)>-1) { 
 file.makeCopy(name, folderMEA);
  }
  
  else if (fileUploadEntity.indexOf(EEA)>-1) { 
 file.makeCopy(name, folderEEA);
  }
}

Upvotes: 0

Views: 129

Answers (1)

Wicket
Wicket

Reputation: 38296

You code is using indexOf the wrong way.

Instead of

fileUploadEntity.indexOf(APAC)

try

APAC.indexOf(fileUploadEntity)

Do the same or the other places where indexOf is used

Reference

Upvotes: 1

Related Questions