2013-04-09 95 views
1

我有什么似乎是一个很小的问题......减去日期谷歌电子表格脚本

我已经建立了在谷歌电子表格的脚本返回当月&年,并把它放到一个细胞。 (这是一张更大的表单的一部分,所以我确实需要在脚本中执行此操作的奢侈)。我似乎无法显示上个月,因为这是上个月的报告。

因此,例如,如果我想在2013年3月进行报告,那么如何使用当前日期显示此单元格,或者是否有更好的方法来执行此操作?

我目前这样做,但卡住与计算,因为它“后第9行参数列表中缺少)”

function myFunction() { 
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 

var today_date = Utilities.formatDate(new Date(), "GMT", "MMMM yyyy"); 

var date = sheet.getRange("A2"); 
date.setValue(today_date); 

date.setFormula("=EDATE("today_date",-1)"); 

} 

错误的输出或可我只是添加一些到Utilities.formatDate做(新日期(),“GMT”,“MMMM yyyy”);

您的帮助是最受赞赏的。

回答

1

正确的Javascript是:

date.setFormula("=EDATE(" + today_date + ",-1)");

但不幸的是这不会对电子表格方面的工作。你需要这样的事情,使其工作:

date.setFormula('=EDATE(VALUE("1 ' + today_date + '");-1)');

想必你会喜欢它格式化为MMMM YYYY:

date.setFormula('=TEXT(EDATE(VALUE("1 ' + today_date + '");-1);"MMMM yyyy")');

话虽这么说,但它看起来像一个有点复杂的做法。你可以使用JavaScript这样做:

function monthOffset(date, months) { 
    //returns the first day of the month with the required months offset 
    var result = new Date(); 
    result.setFullYear(date.getFullYear(), date.getMonth() + months, 1); 
    return result; 
} 

,然后在主函数中使用:

var calc_date = Utilities.formatDate(monthOffset(new Date(), -1), "GMT", "MMMM yyyy");

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date