2013-04-09 94 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