我正在尝试创建一个附加组件,该附加组件将根据用户输入侧边栏的日期创建一系列事件。本质上,该脚本将在用户想要的那一天创建许多不同的事件。
我似乎无法正确处理日期并且它正在周三创建活动。 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秒总运行时间]
对此问题的任何帮助都表示赞赏。我承认自己是日历的新手并且做了大量的搜索和阅读,但此时已经设法让自己旋转。
感谢。
答案 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。它说如下。
如果未指定时区,则在脚本的时区上下文中解释时间值,该时区可能与日历的时区不同。
但如果时间不是你想要的,请赔偿它。
如果我误解了你的问题,我很抱歉。那时,请告诉我。