Use javascript's Date() as Harry mentioned above. There are a few quirks e.g. month 0 is January, so december is month 11.
I like to have a separate function for creating the dates that I use throughout a script.
var settings = {
sheet:'SheetName',
start:90, // Number of days. Start date is this number of days before end date
end:1 // number of days ago from today. 0 = today, 1 = yesterday etc
}
function main() {
var sheet = SpreadsheetApp.openByUrl(settings.url).getSheetByName(settings.sheet);
var dates = getDates(settings.start,settings.end);
var report = AdsApp.report(
'SELECT ' +
'Date,Impressions,Clicks ' +
'FROM ACCOUNT_PERFORMANCE_REPORT ' +
'DURING ' + dates.report
)
report.exportToSheet(sheet); Btw: no need to clear sheet for old data first - this function will do it for you
Logger.log('Data from '+dates.prettyStart+' until '+dates.prettyEnd+', exported to spreadsheet\n\n'+settings.url);
}
function getDates(start,end) {
var format = 'yyyyMMdd';
var prettyFormat = 'MMM dd yyyy';
var timeZone = AdsApp.currentAccount().getTimeZone();
var today = new Date();
var oneDay = 1000*60*60*24; // milliseconds in a day
var endDate = new Date(today - (oneDay * end));
var formatEndDate = Utilities.formatDate(endDate,timeZone,format);
var prettyEndDate = Utilities.formatDate(endDate,timeZone,prettyFormat);
var startDate = new Date(endDate - ((oneDay * start)-oneDay));
var formatStartDate = Utilities.formatDate(startDate,timeZone,format);
var prettyStartDate = Utilities.formatDate(startDate,timeZone,prettyFormat);
return {report:formatStartDate+','+formatEndDate,prettyStart:prettyStartDate,prettyEnd:prettyEndDate}
}