【问题标题】:Export Calendar Date to spreadsheetout - Time Stripped off - Google Script将日历日期导出到电子表格输出 - 时间剥离 - Google 脚本
【发布时间】:2016-08-10 02:36:26
【问题描述】:

我正在使用 Google Script 将一些日历事件导出到电子表格;我的脚本的相关部分如下:

var details=[[mycal,events[i].getTitle(), events[i].getDescription(), events[i].getLocation(), events[i].getStartTime(), myformula_placeholder, ('')]];
var range=sheet.getRange(row,1,1,7);
range.setValues(details);

此代码有效,但输入电子表格的“时间”是 nnnnn.nn 形式的实数。在电子表格本身上,使用小数点左侧的整数(例如 2017 年 10 月 15 日)看起来不错,但小数点是值的一部分,因此是电子表格值的一部分。

我的脚本将数据放入我的工作簿中的一个工作表中,另一个工作表读取具有上述日期类型的数据行,并使用匹配函数(对于今天())从另一个工作表中查找特定日期信息。如果我能去掉小数,那会很好用。

我如何使用我上面的内容(如果我偏离了我发现的作品,我将重做几个小时的工作)但只添加所需的内容,以便只将整数部分放入输出电子表格中,这样我就有了我的 match 函数使用 today() 可以很好地找到一个纯日期?

我一直在挖掘,但在尝试将它们放在一起时错误比比皆是。 “解析”看起来不错,但它失败了,因为验证不喜欢在 getStartTime 中使用解析。可能是我用错了。

我们将不胜感激。

【问题讨论】:

    标签: date time google-apps-script spreadsheet strip


    【解决方案1】:

    根据 CalendarApp 文档,getStartTime() 生成一个 Date 对象。您应该能够从日期对象中分别提取日期和时间:

    var eventStart = events[i].getStartTime();  // Returns date object
    var startDate = eventStart.toDateString();  // Returns date portion as a string
    var startTime = eventStart.toTimeString();  // Returns time portion as a string
    

    然后,您可以将其中一项或两项写入电子表格。有关更多信息,请参阅 w3schools Javascript 日期参考: http://www.w3schools.com/jsref/jsref_obj_date.asp

    如果你想指定字符串格式,可以在Utilities服务中尝试formatDatehttps://developers.google.com/apps-script/reference/utilities/utilities#formatdatedate-timezone-format

    【讨论】:

    • 蒂芙尼,谢谢!我做了更多的挖掘,终于弄清楚你想告诉我什么。我现在正在使用: var eventStart = events[i].getStartTime(); // 返回日期对象 var startDate = eventStart.toDateString(); // 以字符串形式返回日期部分 var details=[[mycal,events[i].getTitle(), events[i].getDescription(), events[i].getLocation(), startDate, myformula_placeholder, ('') ]];我现在仍然知道为什么我使用 Math.floor 得到奇怪的整数值,但我有我需要的东西。谢谢!
    • @Jeffs,我很高兴它成功了。请接受我的回答,因为这就是你最终使用的!
    【解决方案2】:

    你可以只使用 Math.floor() 函数

    http://www.w3schools.com/jsref/jsref_floor.asp

    这会将实数四舍五入为整数。然后您的行将显示为:

    var details=[[mycal,events[i].getTitle(), events[i].getDescription(), events[i].getLocation(), Math.floor(events[i].getStartTime()), myformula_placeholder, ('')]];
    

    【讨论】:

    • 阿尔菲,非常感谢您的意见。我寄予厚望,因为它非常清楚我需要做什么以及如何将数学地板集成到我的代码中。这比 Tiffany 的响应要容易得多,我无法干净地进入我的代码以无错误地运行。
    • 很遗憾,我没有得到预期的结果。今天,8 月 12 日拉动,我拉动了 42584.49,这确实反映了 8 月 12 日中午。使用数学地板,我得到一个整数 1471010400000,我看到它没有格式化,并假设这必须是毫秒。当我除以 1000x60x60x24 时,我没有得到预期的 42584,而是 1946 年的日期。知道发生了什么,以及如何将我需要的内容输入到输出电子表格中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多