Reputation: 83
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());
}
Log for date & formatted date when I add the following & submit a form:
{ Logger.log(date);
Logger.log(formattedDate);
}
Plus the View > Logs results from running the script within the script editor:
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 -
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
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