Skip to content

Commit

Permalink
Fix for TypeError: Cannot read property 'dateTime' of undefined bug (#…
Browse files Browse the repository at this point in the history
…151)

* update ical.js to latest version 1.4

* consider tz for onlyFutureEvents filtering

* Minor Logging improvements
  • Loading branch information
jonas0b1011001 authored Sep 13, 2020
1 parent b50f50a commit 940b148
Show file tree
Hide file tree
Showing 3 changed files with 135 additions and 66 deletions.
2 changes: 1 addition & 1 deletion Code.gs
Original file line number Diff line number Diff line change
Expand Up @@ -211,4 +211,4 @@ function startSync(){
}
Logger.log("Sync finished!");
PropertiesService.getScriptProperties().setProperty('LastRun', 0);
}
}
25 changes: 15 additions & 10 deletions Helpers.gs
Original file line number Diff line number Diff line change
Expand Up @@ -134,8 +134,7 @@ function parseResponses(responses){
return true;
}
var eventEnde;
eventEnde = new ICAL.Time.fromString(event.getFirstPropertyValue('dtend').toString());
eventEnde = eventEnde.adjust(1,0,0,0);//Avoid timezone issues
eventEnde = new ICAL.Time.fromString(event.getFirstPropertyValue('dtend').toString(), event.getFirstProperty('dtend'));
return (eventEnde.compare(startUpdateTime) >= 0);
}catch(e){
return true;
Expand Down Expand Up @@ -478,7 +477,7 @@ function checkSkipEvent(event, icalEvent){
* @param {Calendar.Event} recEvent - The event instance to process
*/
function processEventInstance(recEvent){
Logger.log("\t" + recEvent.recurringEventId.substring(0,10));
Logger.log("ID: " + recEvent.extendedProperties.private["id"] + " | Date: "+ recEvent.recurringEventId.substring(0,10));
var recIDStart = new Date(recEvent.recurringEventId);
recIDStart = new ICAL.Time.fromJSDate(recIDStart, true);

Expand All @@ -489,15 +488,21 @@ function processEventInstance(recEvent){
privateExtendedProperty : "id=" + recEvent.extendedProperties.private['id']
}).items;

Logger.log("Found " + calendarEvents.length + " possible instances");
var eventInstanceToPatch = calendarEvents.filter(function(item){
var origStart = item.originalStartTime.dateTime || item.originalStartTime.date;
var instanceStart = new ICAL.Time.fromString(origStart);
try{
var origStart = item.originalStartTime.dateTime || item.originalStartTime.date;
var instanceStart = new ICAL.Time.fromString(origStart);

return (instanceStart.compare(recIDStart) == 0);
return (instanceStart.compare(recIDStart) == 0);
}catch(e){
Logger.log("Error: " + e);
return 0;
}
});

if (eventInstanceToPatch.length == 0){
Logger.log("No Instance found, adding as new event!");
Logger.log("No Instance matched, adding as new event!");
try{
Calendar.Events.insert(recEvent, targetCalendarId);
}
Expand All @@ -507,7 +512,7 @@ function processEventInstance(recEvent){
}
else{
try{
Logger.log("Patching event instance");
Logger.log("Patching existing event instance");
Calendar.Events.patch(recEvent, targetCalendarId, eventInstanceToPatch[0].id);
}
catch(error){
Expand Down Expand Up @@ -688,7 +693,7 @@ function parseAttendeeResp(veventString){
else if (['ACCEPTED', 'COMPLETED'].indexOf(respMatch[2].toUpperCase()) > -1) {
respMatch[2] = 'accepted';
}
else if (['DECLINED'].indexOf(respMatch[2].toUpperCase(respMatch[2].toUpperCase())) > -1) {
else if (['DECLINED'].indexOf(respMatch[2].toUpperCase()) > -1) {
respMatch[2] = 'declined';
}
else if (['DELEGATED', 'IN-PROCESS', 'TENTATIVE'].indexOf(respMatch[2].toUpperCase())) {
Expand Down Expand Up @@ -827,7 +832,7 @@ function checkForUpdate(){
var alreadyAlerted = PropertiesService.getScriptProperties().getProperty("alertedForNewVersion");
if (alreadyAlerted == null){
try{
var thisVersion = 5.3;
var thisVersion = 5.4;
var html = UrlFetchApp.fetch("https://github.com/derekantrican/GAS-ICS-Sync/releases");
var regex = RegExp("<a.*title=\"\\d\\.\\d\">","g");
var latestRelease = regex.exec(html)[0];
Expand Down
Loading

0 comments on commit 940b148

Please sign in to comment.