taleesita
taleesita

Reputation: 83

Google Script - Pull Date from Form Field and Format

I'm trying to finalize a script for a google form that will retitle uploaded files uploaded via the form using data input into the form. I'd like the date to format as yyyy.MM.dd. By default, my date variable outputs the form's date field as yyyy-MM-dd.

I attempted to add a formatted date variable that reformats the date, but then it stops reading the date from the form and instead outputs today's date in the correct yyyy.MM.dd format.

Any tips on how to get the script to format the date in the form's field to yyyy.MM.dd would be much appreciated!

I have the following -

 var form=FormApp.getActiveForm();
 
// returns the total number of form submissions
 var length=form.getResponses().length;
 
 var date=form.getResponses()[length-1].getItemResponses()[1].getResponse();
 var formattedDate = Utilities.formatDate(new Date(),'America/Los_Angeles','yyyy.MM.dd');
 var transaction=form.getResponses()[length-1].getItemResponses()[2].getResponse();
 var id=form.getResponses()[length-1].getItemResponses()[7].getResponse();

 var file=DriveApp.getFileById(id);
 name = file.getName();
 

 var name = formattedDate + ' - ' + transaction + ' - ' + name.split(' - ')[1]
 file.setName(name);
 
 }

Log for date & formatted date when I add the following & submit a form:

 {  Logger.log(date.toString());
       Logger.log(formattedDate.toString());
     }

enter image description here

Log for date & formatted date when I add the following & submit a form:

{ Logger.log(date);
   Logger.log(formattedDate);   
 }

enter image description here

Plus the View > Logs results from running the script within the script editor: enter image description here

Updated date code to

var date=form.getResponses()[length-1].getItemResponses()[1].getResponse();
      date = new Date(date);
  var formattedDate = Utilities.formatDate(date,'America/Los_Angeles','yyyy.MM.dd');

Submitted form with 7/22/1989 date but logs show it registered 7/21/1989 as date and formattedDate and I'm at a loss as to why... Form - enter image description here

Log - enter image description here enter image description here

FINAL CODE -

 var form=FormApp.getActiveForm();
     
    // returns the total number of form submissions
     var length=form.getResponses().length;
     
     var date=form.getResponses()[length-1].getItemResponses()[1].getResponse();
      date = new Date(date);
var formattedDate = Utilities.formatDate(date,'UTC','yyyy.MM.dd');
     var transaction=form.getResponses()[length-1].getItemResponses()[2].getResponse();
     var id=form.getResponses()[length-1].getItemResponses()[7].getResponse();
    
     var file=DriveApp.getFileById(id);
     name = file.getName();
     
    
     var name = formattedDate + ' - ' + transaction + ' - ' + name.split(' - ')[1]
     file.setName(name);
     
     }

Upvotes: 0

Views: 1094

Answers (1)

Amit Singh
Amit Singh

Reputation: 188

What I can see in your code is that while using format date-utilities you're using "new Date" that is why it returns today's date you need to supply your date variable. Try this instead

Edit-1 converted date variable from form response to date using new Date(date);

 var form=FormApp.getActiveForm();
     
    // returns the total number of form submissions
     var length=form.getResponses().length;
     
     var date=form.getResponses()[length-1].getItemResponses()[1].getResponse();
      date = new Date(date);
var formattedDate = Utilities.formatDate(date,'America/Los_Angeles','yyyy.MM.dd');
     var transaction=form.getResponses()[length-1].getItemResponses()[2].getResponse();
     var id=form.getResponses()[length-1].getItemResponses()[7].getResponse();
    
     var file=DriveApp.getFileById(id);
     name = file.getName();
     
    
     var name = formattedDate + ' - ' + transaction + ' - ' + name.split(' - ')[1]
     file.setName(name);
     
     }

Upvotes: 1

Related Questions