使用HTML输入中的日期在Google Apps脚本中创建活动

时间:2017-10-21 22:50:47

标签: google-apps-script

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

我似乎无法正确处理日期并且它正在周三创建活动。 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,Wed Dec 31 16:00:00 PST 1969,Wed Dec 31 16:00:00 PST 1969])[0.506秒]

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

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

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

对此问题的任何帮助都表示赞赏。我承认自己是日历的新手并且做了大量的搜索和阅读,但此时已经设法让自己旋转。

感谢。

1 个答案:

答案 0 :(得分: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。它说如下。

  

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

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

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