我有3个变量:(1)Date(2)StartTime(3)EndTime 我想将它们作为两个变量(1)Date和StartTime(2)Date和EndTime,以便我可以创建一个Google日历事件。
根据我的理解,为了创建Google日历活动,我需要传递ISO字符串格式以用于事件计时。任何人都可以检查下面的代码并帮助我找到丢失的部分。
function createEvent(title,Dt,startTime,endTime,col) {
var calendarId = '_____@group.calendar.google.com';
Logger.log(Dt); //2016-07-21
Logger.log(startTime); // 11:55 AM
Logger.log(typeof(startTime)); //string
//Help Needed to convert + to ISO
var event = {
summary: title,
start: {
dateTime: startISO
},
end: {
dateTime: endISO
},
colorId: col
};
event = Calendar.Events.insert(event, calendarId);
Logger.log('Event ID: ' + event.getId());
答案 0 :(得分:2)
您可以在App-B
对象上使用.toISOString()
来获取ISO字符串,但Google日历请求的格式与此略有不同,但这是一个快速修复。从正常转换开始:
Date
如果您需要从单独的对象中创建(new Date()).toISOString(); // "2016-07-29T00:00:00.000Z"
var startTime = new Date();
var isoStartTime = startTime.toISOString();
,您可以:
Date
然后将其更改为Google正在寻找的内容:
var yourDate = '2016-07-29';
var yourTime = '11:55 AM';
var startTime = new Date(yourDate);
startTime.setHours(yourTime.split(':')[0]); // 11
startTime.setMinutes(yourTime.split(':')[1].substr(0,2)); // 55
startTime = startTime.toISOString(); // "2016-07-29T11:55:00.000Z"
或者
// To RFC 3339...
startTime.substr(0,startTime.length-5)+'Z'; // "2016-07-29T11:55:00Z"
您也可以(并且可能更喜欢)使用数字代替字符串;如果你单独传递//if the "startTime = startTime.toISOString()" assignment happened
startTime.split('.')[0]+'Z';
//if startTime is a Date object, not a string
startTime.toISOString().split('.')[0]+'Z';
和hours
,它看起来比字符串操作更清晰:
minutes