0

J'utilise un script pour télécharger des événements de Google Agenda dans une feuille de calcul. J'ai un problème où les «événements toute la journée» arrivent en 2 jours, par exemple: toute la journée, le 5/9/17 téléchargements dans la feuille comme 5/9/17-5/10/17. Voici mon code:Pourquoi chaque événement d'une journée est représenté comme un événement de deux jours?

// Loop through all calendar events found and write them out starting on calulated ROW 2 (i+2) 
for (var i=0;i<events.length;i++) { 
    var row=i+2; 
    var myformula_placeholder = ''; 
    // Matching the "header=" entry above, this is the detailed row entry "details=", 
    // and must match the number of entries of the GetRange entry below 
    // NOTE: I've had problems with the getVisibility for some older events not having a value, 
    // so I've had do add in some NULL text to make sure it does not error 
    var details=[[ 
    events[i].getStartTime(), 
    events[i].getTitle(), 
    events[i].getAllDayStartDate(), 
    events[i].getAllDayEndDate(), 
    events[i].getLocation(), 
    events[i].getDescription(), 
    events[i].getId() 
    ]]; 
    var range=sheet.getRange(row,1,1,7); 
    range.setValues(details); 
} 

Toute idée de ce qui pourrait se produire ici? Est-ce un bug ou y a-t-il une erreur dans mon code? Je suppose qu'une solution de contournement pourrait être de soustraire 1 jour de chaque numéro AllDayEndDate, mais se demandant pourquoi cela arrive même en premier lieu.

+0

appel réussi à des méthodes renvoie une réponse d'événements à la fois (https://developers.google.com/google-apps/calendar/v3/reference/events#resource) [dates de début et de fin] comme vous pouvez le voir dans la ressource des événements. – noogui

Répondre

0

Selon le documentation il est un comportement normal:

Obtient la date à laquelle cet événement de calendrier toute la journée se termine. (Si n'est pas un événement d'une journée entière, cette méthode lèvera une exception.) La date retournée représentera minuit au début de la journée après la fin de l'événement dans le fuseau horaire du script. Pour utiliser à la place le fuseau horaire du calendrier, appelez getEndTime().