Google Script : Google Calendar vers la Home Center

Ce script a pour but de rechercher des événements journaliers typés (« Maison », « Vacances », « Travail ») et d’activer un bouton virtuel de la Home Center par rapport au type de journées trouvée.

/**
 * ========================================================================================================
 * Lit les événements de la journée dans le calendrier spécifié et presse sur les boutons du VD 
 * Bouton 2 = Aujourd'hui Travail
 * Bouton 3 = Aujourd'hui Maison
 * Bouton 4 = Aujourd'hui Vacances
 * Bouton 6 = Demain Travail
 * Bouton 7 = Demain Maison
 * Bouton 8 = Demain Vacances
 * ========================================================================================================
**/

var HC2_IP = "www.xxxxx.xxx";
var LOGIN = "admin";
var PWD = "admin"
var VD = 101
var CAL_ID = '2xxxxxxxxxxxxxxxxxxx@group.calendar.google.com';

var MOT_CLE_JOUR_A_LA_MAISON = 'Maison';
var MOT_CLE_JOUR_EN_VACANCES = 'Vacances';

var INDEX_AUJOURDHUI = 2; 
var INDEX_DEMAIN = 6; 


/**
 * ---------------------------------------------------------------------------------------------------------
 * Aujourd'hui et Demain
 * ---------------------------------------------------------------------------------------------------------
**/
function traiter() {
 traiterAujourdhui();
 traiterDemain();
}

/**
 * ---------------------------------------------------------------------------------------------------------
 * Aujourd'hui
 * Stocke la valeur de retour dans la variable 20 de la ZiBASE
 * ---------------------------------------------------------------------------------------------------------
**/
function traiterAujourdhui() {
 var today = new Date();
 url = "http://"+HC2_IP + "/api/callAction?deviceID="+VD+"&name=pressButton&arg1=" + (INDEX_AUJOURDHUI + getTypeOfADay(today))
 var options = {"headers": {
 "User-Agent": "MY_APP_NAME (App URL/your email address)",
 "Authorization": "Basic " + Utilities.base64Encode(LOGIN + ":" + PWD)
 }}
 
 envoi = UrlFetchApp.fetch(url, options)
};


/**
 * ---------------------------------------------------------------------------------------------------------
 * Demain
 * Stocke la valeur de retour dans la variable 21 de la ZiBASE
 * ---------------------------------------------------------------------------------------------------------
**/
function traiterDemain() {
 var tomorrow = new Date(Number(new Date()) + 1000 * 60 * 60 * 24);
 url = "http://"+HC2_IP + "/api/callAction?deviceID="+VD+"&name=pressButton&arg1=" + (INDEX_DEMAIN + getTypeOfADay(tomorrow))
 var options = {"headers": {
 "User-Agent": "MY_APP_NAME (App URL/your email address)",
 "Authorization": "Basic " + Utilities.base64Encode(LOGIN + ":" + PWD)
 }}
 
 envoi = UrlFetchApp.fetch(url, options); 

 url = "http://"+HC2_IP + "/api/callAction?deviceID="+VD+"&name=pressButton&arg1=12"
 envoi = UrlFetchApp.fetch(url, options) 
};


/**
 * ---------------------------------------------------------------------------------------------------------
 * Lit les événements de la journée dans le calendrier spécifié et returne les valeurs prédéfinies
 * Date : la date souhaité
 * Retour : 3 si un événement nommé Vacances existe, 2 si un évenement nommé Maison existe, 1 si aucun de ces événements n'a été trouvé
 * ---------------------------------------------------------------------------------------------------------
**/
function getTypeOfADay(aDate) {

 var cal = CalendarApp.getCalendarById(CAL_ID);
 
 // Google Script contient un bug sur les événements journaliers. Il est donc important, avant la recherche
 // de basculer en TimeZone +0.
 var oldTimeZone = cal.getTimeZone();
 cal.setTimeZone("Etc/GMT");
 
 var eventsMaison = cal.getEventsForDay(aDate, {search: MOT_CLE_JOUR_A_LA_MAISON});
 var eventsVacances = cal.getEventsForDay(aDate, {search: MOT_CLE_JOUR_EN_VACANCES});
 
 var result = 1; // Travail
 if (eventsVacances.length > 0) {
 if (existAllDay(eventsVacances)) result = 3 // Vacances 
 } else if (eventsMaison.length > 0) {
 if (existAllDay(eventsMaison)) result = 2 // Maison
 }
 
 cal.setTimeZone(oldTimeZone);
 return result;
 
}

/**
 * ---------------------------------------------------------------------------------------------------------
 * S'assure qu'un des évenement est de type "Toute la journée"
 * events : Tous les événement de la journée
 * Retour : vrai si un événement est de type toute la journée
 * ---------------------------------------------------------------------------------------------------------
**/
function existAllDay(events) {
 for (var i in events) {
 if (events[i].isAllDayEvent()) {
 return true;
 }
 } 
 return false;
}

2 commentaires sur “Google Script : Google Calendar vers la Home Center”

  1. Bonjour.
    Merci pour cette explication très complète.
    Comment pourrai-je utiliser tasker pour faire une tache simple (exemple passer en mode vibreur) les jours ou « travail » est noté dans mon agenda google?
    Je pense que c’est avec « cal.getEventsForDay » mais je ne comprend pas trop comment ça fonctionne.
    Par avance merci.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s