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; }
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.
Tasker n’a besoin de rien pour gérer cela. Voir Nouveau Profile ->Etat -> App -> Entrée du calendrier.
Bien plus simple non ? 🙂