【问题标题】:How to replicate now() spreadsheet function in App Script如何在 App 脚本中复制 now() 电子表格函数
【发布时间】:2014-04-14 03:58:05
【问题描述】:

我想记录应用脚本在电子表格中运行的时间。该时间将被电子表格中的其他公式用于计算从现在到最后一次运行应用脚本的时间。

电子表格上的公式使用 NOW() 函数,该函数返回自 1899 年 12 月 30 日以来的十进制天数。此纪元的时区取决于工作表的时区,请参阅18596933

我需要使用 App Script 将当前时间插入到电子表格单元格中,其格式与 NOW() 相同。我一直在尝试使用 Javascript 日期来执行此操作,但是这些日期基于 App 时区,可能与电子表格的时区不同。

如何创建 NOW() 的 App Script 版本,它返回与 NOW() 相同的值,而不考虑电子表格或脚本时区的差异?

【问题讨论】:

    标签: javascript datetime google-apps-script timezone


    【解决方案1】:

    我的解决方法不会像 NOW() 那样返回带有小数部分的天数。相反,它返回一个字符串,App 脚本似乎可以在还包含 NOW() 的公式中正确处理该字符串。

    function getSpreadsheetTime() {
      var spreadsheetTimeZone = SpreadsheetApp.getActive().getSpreadsheetTimeZone();
      var spreadsheetDateTime = Utilities.formatDate(new Date(), spreadsheetTimeZone, "dd/MM/yyyy' 'HH:mm:ss.S");
    
      return spreadsheetDateTime;
    }
    

    这是基于来自Google Apps Script formatDate using user's time zone instead of GMT的答案

    【讨论】:

    • 请注意,在较新版本的 Google 表格中,可以缓存 Apps 脚本函数的结果,因此不会总是以可预测的方式更新。
    猜你喜欢
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    • 2015-08-10
    • 2021-10-29
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多