【问题标题】:Google spreadsheet to Google Calendar format date谷歌电子表格到谷歌日历格式日期
【发布时间】:2012-07-13 18:06:34
【问题描述】:

我在谷歌脚本中使用 createEvent。

我无法添加事件,因为脚本没有正确读取电子表格中日期列的格式。

我需要一种格式为“2012 年 8 月 10 日 08:00:00”。但是当我检查我的日期时间的变量是由我的电子表格设置的时,格式包括星期几并且是完全错误的。我在电子表格中使用了格式选项,但这似乎只是一个视图控件,不会影响它的实际存储方式。

如何格式化我的电子表格以匹配 createEvent 函数所期望的格式?

谢谢

【问题讨论】:

    标签: google-apps-script google-sheets google-calendar-api


    【解决方案1】:

    CalendarApp.createEvent() 期望 startTimeendTime 参数都有一个 Date 对象。因此,电子表格中日期的文本格式并不重要——只要引用的单元格包含日期

    var s = SpreadsheetApp.getActiveSheet();
    var eventDate = s.getRange("B17").getValue(); // August 10, 2012 08:00:00, a date
    
    var eventTitle = "Example";
    var eventDetails = "Details";
    
    //Get the calendar
    var cal = CalendarApp.getCalendarsByName('Calendar-Name')[0];//Change the calendar name
    var eventStartTime = eventDate;
    //End time is calculated by adding an hour in the event start time 
    var eventEndTime = new Date(eventDate.valueOf()+60*60*1000);
    //Create the events
    cal.createEvent(eventTitle, eventStartTime,eventEndTime ,{description:eventDetails});
    

    如果引用的单元格包含纯文本,则格式必须是 javascript Date 对象构造函数可以理解的格式。事实证明,您显示的格式是可以接受的,尽管由于没有明确说明时区,它将默认为电子表格的区域设置。您可以对上面的示例进行以下更改:

    // You could optionally generate a date object from the string representation
    // HOWEVER createEvent() is smart enough to handle the string itself
    var eventStartTime = new Date(eventDate);
    

    如果您想进行实验,请查看 Waqar Ahmad 的 tutorial 关于该主题的帖子。我可以通过粘贴您的示例日期字符串(2012 年 8 月 10 日 08:00:00)来创建一个事件。教程中的应用脚本代码盲目地根据从日历弹出窗口中选择的日期或键入的文本字符串创建日期对象。[注意教程代码中有错字,evenDate 应为eventDate.]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多