通过google appscript和spreedsheet添加到Google日历时的时间更改: 应用脚本的代码(仅限时间部分):
function setUpCalendar_(values, range) {
var cal = CalendarApp.createCalendar('Conference Calendar');
Browser.msgBox('Calender time zone: ' + cal.getTimeZone());
//to check timezone for debugging.
for (var i = 1; i < values.length; i++) {
var session = values[i];
var title = session[0];
var start = joinDateAndTime_(session[1], session[2]);
var end = joinDateAndTime_(session[1], session[3]);
var options = {location: session[4], sendInvites: true};
var event = cal.createEvent(title, start, end, options)
.setGuestsCanSeeGuests(false);
//session[5] = event.getId();
///====:::: test :::: replacingsession[5] with values[i][5]
}
range.setValues(values);
// Store the ID for the Calendar, which is needed to retrieve events by ID.
ScriptProperties.setProperty('calId', cal.getId());
}
function joinDateAndTime_(date, time) {
date = new Date(date);
date.setHours(time.getHours());
date.setMinutes(time.getMinutes());
Browser.msgBox(date); // to check time for debuging.
return date;
}
使用脚本链接到电子表格:
https://docs.google.com/spreadsheet/ccc?key=0AorrYgKfVJpQdEdBY2lYdEpIUUc0TlRRUkNlNmRPTWc&usp=sharing
到目前为止采取的措施: 1.将电子表格的时区更改为区域设置。 2.将日历的时区更改为语言环境。结果: 电子表格和日历中的不同时间。
问题: 必须在电子表格和日历中同时进行。
的引用:
calendarApp createEvent added event on wrong day
How to use timeZone of calendar to set timeZone for date object
答案 0 :(得分:1)
在使用您的方法将电子表格中的日期和时间加入JavaScript日期对象(一些随机值添加到小时和/或分钟)时,我已经遇到过这种问题,所以我找到了另一种更可靠的方法...(而 - 我承认 - 少学术......)
我在电子表格的副本中进行了测试,当我为会议进行测试时,事件按照应有的方式创建(在加尔各答时间,这对我来说并不完美,但我暂时“移动”以检查结果; - )
这是代码,只需复制并粘贴到您的脚本中即可替换您的函数。
function joinDateAndTime_(date, time){
var hrs = Number(Utilities.formatDate(time,Session.getScriptTimeZone(),'HH'));
var min = Number(Utilities.formatDate(time,Session.getScriptTimeZone(),'mm'));
var sec = Number(Utilities.formatDate(time,Session.getScriptTimeZone(),'ss'));
Logger.log('date = '+Utilities.formatDate(date, Session.getScriptTimeZone() ,'dd-MMM-yyyy HH:mm:ss'));
Logger.log('time = '+hrs+':'+min+':'+sec);
var dateAndTime = new Date(date).setHours(hrs,min,sec,0);
Logger.log('full date object = '+Utilities.formatDate(new Date(dateAndTime), Session.getScriptTimeZone() ,'dd-MMM-yyyy HH:mm:ss'))
return new Date(dateAndTime);
}
不要忘记检查工作表和脚本的时区......(因为您提到过您尝试了不同的设置)它们当然必须与您的区域和日历相匹配。