【问题标题】:Using a Date from HTML Input to Create Event in Google Apps Script使用 HTML 输入中的日期在 Google Apps 脚本中创建事件
【发布时间】:2017-10-21 22:50:47
【问题描述】:

我正在尝试创建一个附加组件,它将根据用户在侧边栏中输入的日期创建一系列事件。本质上,该脚本将在用户想要的那一天创建许多不同的事件。

我似乎无法正确处理日期,它正在星期三创建活动。 1969 年 12 月 31 日。我一直在寻找并了解原因,但不知道如何解决。

这是侧边栏输入的 HTML。

<input type="date" id="date" width="50px"/>

<input type="button" value="Run Script"
onclick="google.script.run.sidebarOutputB(
document.getElementById('date').value
)"; /><br>
<br>

这里是函数。这是简单的形式。我打算为所有事件使用不同的开始和结束时间,但想使用用户选择的日期。

function betaCreateB(dateP) {
  var date = dateP;
  var startTime = "09:00:00";
  var endTime = "09:30:00";
  var title = "titleP";
  var getCal = CalendarApp.getDefaultCalendar();
  var event = getCal.createEvent(title,
      new Date(date + ' ' + startTime),
      new Date(date + ' ' + endTime));
  Logger.log('Event ID: ' + date + ' ' + event.getId());
}

日志告诉我正在获取以以下格式选择的日期:2017-10-21。日志还显示它正在创建一个事件并提供一个事件 ID。

问题在于执行记录。这就是我为 createEvent 函数得到的:

[17-10-21 18:48:10:447 EDT] 开始执行

[17-10-21 18:48:10:454 EDT] Logger.log([2017-10-21, []]) [0 秒]

[17-10-21 18:48:10:532 EDT] CalendarApp.getDefaultCalendar() [0.076 秒]

[17-10-21 18:48:11:039 EDT] Calendar.createEvent([titleP,1969 年 12 月 31 日星期三 16:00:00 PST 1969 年 12 月 31 日星期三 16:00:00 PST]) [0.506秒]

[17-10-21 18:48:11:039 EDT] CalendarEvent.getId() [0 秒]

[17-10-21 18:48:11:040 EDT] Logger.log([事件 ID: 2017-10-21 odj9j3feheksjnji5h1qf89hns@google.com, []]) [0.001 秒]

[17-10-21 18:48:11:042 EDT] 执行成功 [0.589 秒总运行时间]

感谢任何有关此修复的帮助。我承认自己是日历的新手,并且已经进行了很多搜索和阅读,但在这一点上已经设法让自己陷入困境。

谢谢。

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    下面的修改怎么样?

    修改点:

    • 来自google.script.run.sidebarOutputB(document.getElementById('date').value) 的值是2017-10-21。当使用javascript将字符串日期转换为日期对象时,如果只是日期,则可以使用2017-10-21。但如果是2017-10-21 09:00:00,则字符串日期的格式要求为2017/10/21 09:00:00

    修改后的脚本:

    function betaCreateB(dateP) {
      var date = dateP.replace(/-/g, "/"); // Modified
      var startTime = "09:00:00";
      var endTime = "09:30:00";
      var title = "titleP";
      var getCal = CalendarApp.getDefaultCalendar();
      var event = getCal.createEvent(title,
          new Date(date + ' ' + startTime),
          new Date(date + ' ' + endTime));
      Logger.log('Event ID: ' + date + ' ' + event.getId());
    }
    

    注意:

    关于时区,createEvent()的文档是here。它说如下。

    如果未指定时区,则在脚本时区的上下文中解释时间值,该时区可能与日历的时区不同。

    但如果时间不是你想要的,请补偿。

    如果我误解了你的问题,我很抱歉。到时候请告诉我。

    【讨论】:

    • 感谢您回复我和耐心等待。你完全正确。我把你提供的东西贴在了不正确的地方,没有意识到。谢谢你,很抱歉给你带来了困惑。
    • @Justin Keene 谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多