如何使用Google Apps脚本获取上个月日期的正确格式

时间:2015-08-09 13:05:23

标签: javascript google-apps-script google-analytics-api

使用Google Apps脚本,我将获得上个月的第一个和最后一个日期,然后将格式更改为GMT'yyyy-MM-dd'

var todayDate = new Date();

    var lastDate = function getLastDate() {
      var d = todayDate;
      d.setDate(0);
        return Utilities.formatDate(d, 'GMT', 'yyyy-MM-dd');
    }

    var firstDate = function getFirstDate() {
     var e = todayDate;
        e.setMonth(e.getMonth() - 1);
      e.setDate(1);
      return Utilities.formatDate(e, 'GMT', 'yyyy-MM-dd');
    }

但我得到一个错误说明:

无效值'函数getLastDate(){var d = todayDate; d.setDate(0);返回Utilities.formatDate(e,”GMT“,”yyyy-MM-dd“);}'。值必须与以下正则表达式匹配:'[0-9] {4} - [0-9] {2} - [0-9] {2} |今天|昨天| [0-9] +(daysAgo)'

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

您似乎期望这些变量包含日期,但您声明它们的方式并不会为它们分配相关函数的返回值,而是函数本身。

您希望lastDate包含:

2015-07-31

但它实际上包含:

function getLastDate() { var d = todayDate; d.setDate(0); return Utilities.formatDate(e, "GMT", "yyyy-MM-dd"); } 

您需要将作业与声明分开:

var todayDate = new Date();

function getLastDate() {
    var d = todayDate;
    d.setDate(0);
    return Utilities.formatDate(d, 'GMT', 'yyyy-MM-dd');
}
var lastDate = getLastDate();

function getFirstDate() {
    var e = todayDate;
    e.setMonth(e.getMonth() - 1);
    e.setDate(1);
    return Utilities.formatDate(e, 'GMT', 'yyyy-MM-dd');
}
var firstDate = getFirstDate();

// check values
Logger.log(lastDate);
Logger.log(firstDate);

但看起来我们甚至不需要保留这些功能。我们可以将它们变成IIFE。我们也应该避免重用相同的Date对象:

var lastDate = (function() {
    var d = new Date();
    d.setDate(0);
    return Utilities.formatDate(d, 'GMT', 'yyyy-MM-dd');
})();

var firstDate = (function() {
    var d = new Date();
    d.setMonth(d.getMonth() - 1);
    d.setDate(1);
    return Utilities.formatDate(d, 'GMT', 'yyyy-MM-dd');
})();

// check values
Logger.log(lastDate);
Logger.log(firstDate);

答案 1 :(得分:0)

如果您想获取上个月的语言并将其设置为西班牙语,请检查一下。

var previousMonth = (function() {
    var d = new Date();
    d.setMonth(d.getMonth() - 1);
    var getLastMonth = Utilities.formatDate(d,Session.getScriptTimeZone(),"MMMM");
    var translateMonthIntoSpanish = LanguageApp.translate (getLastMonth,'en','es');
    var titleCaseMonth = translateMonthIntoSpanish.charAt(0).toUpperCase() + translateMonthIntoSpanish.slice(1);
    return titleCaseMonth;
})();

Logger.log(previousMonth);