37

可以选择编写脚本并将其绑定到触发器。问题是,如何在脚本主体中获取当前时间?

function myFunction() {

  var currentTime = // <<???

}
4

5 回答 5

65

使用 JavaScriptDate()对象。有多种方法可以从对象中获取时间、日期、时间戳等。(参考

function myFunction() {
  var d = new Date();
  var timeStamp = d.getTime();  // Number of ms since Jan 1, 1970

  // OR:

  var currentTime = d.toLocaleTimeString(); // "12:35 PM", for instance
}
于 2012-04-16T21:38:25.107 回答
10

我在我的谷歌文档中考虑了时区,如下所示:

timezone = "GMT+" + new Date().getTimezoneOffset()/60
var date = Utilities.formatDate(new Date(), timezone, "yyyy-MM-dd HH:mm"); // "yyyy-MM-dd'T'HH:mm:ss'Z'"

我的 Google 文档脚本

于 2019-02-18T14:21:24.507 回答
7

使用Datejavascript 提供的对象。对于 Google 的脚本环境来说,它并不是唯一的或特殊的。

于 2012-04-16T21:37:36.623 回答
3

任何说在 Google 表格中获取当前时间并不是 Google 脚本环境独有的人显然从未使用过 Google Apps 脚本。

话虽如此,你想返回当前时间是什么?脚本用户的时区?脚本所有者的时区?

脚本时区由脚本所有者在脚本编辑器中设置。File/Spreadsheet settings但是脚本的不同授权用户可以从Google 表格的菜单中为他们正在使用的电子表格设置时区。

我猜你想要第一个选项。您可以使用内置函数获取电子表格时区,然后使用Utilities该类格式化日期。

var timezone = SpreadsheetApp.getActive().getSpreadsheetTimeZone();

var date = Utilities.formatDate(new Date(), SpreadsheetApp.getActive().getSpreadsheetTimeZone(), "EEE, d MMM yyyy HH:mm")

或者,使用 Javascript 的 date 方法获取 UTC 时间的时区偏移量,格式化时区,并将其传递到Utilities.formatDate().

不过,这需要稍作调整。运行返回的偏移量getTimezoneOffset()与我们通常对时区的看法相矛盾。如果偏移量为正,则本地时区在 UTC 之后,就像美国时区一样。如果偏移量为负数,则本地时区早于 UTC,如亚洲/曼谷、澳大利亚东部标准时间等。

const now = new Date();
// getTimezoneOffset returns the offset in minutes, so we have to divide it by 60 to get the hour offset.
const offset = now.getTimezoneOffset() / 60
// Change the sign of the offset and format it
const timeZone = "GMT+" + offset * (-1) 
Logger.log(Utilities.formatDate(now, timeZone, 'EEE, d MMM yyyy HH:mm');
于 2020-07-24T03:17:50.423 回答
1

Date对象用于处理日期和时间。

日期对象是用new Date().

var date= new Date();

 function myFunction() {
        var currentTime = new Date();
        Logger.log(currentTime);
    }
于 2017-11-23T07:07:03.657 回答