Google-calendar – way to set a daily reminder without it cluttering up the Calendar

google-calendar

In Google Calendar is there a way to set a daily reminder without it cluttering up my Calendar?

e.g. Say I need to take my vitamin pills every morning at 7 am (just a hypothetical example I made up). I need a reminder that I can address with some flexibility (i.e. Not an alarm that keeps ringing) and this also makes sure that if I all I miss it in the morning I can then keep the notification pending and mark it as done in the evening when I do get back home.

I can set it up as a recurring event in Google Calender that repeats daily with a notification but then it unnecessarily clutters up the UI.

i.e. If I print or browse my schedule etc. this shows up as a event every day. That's not what I want.

I just want a daily notification. I tried to make this its separate calendar and then hide it which works to unclutter the Schedule view etc. as intended. But unfortunately, as soon as I hide it the notification does not trigger at all.

Any ideas how this can be done? If at all it can be done.

Best Answer

I don't know of a way to do this on your phone, but on your computer you can at least hide the event on the calendar (although using this approach other events are still sized by the event) using a userscript.

Essentially the approach is to find all calendar events of the type specified when the page loads and when the DOM changed and hide them. Here's one way:

// ==UserScript==
// @name         Google calendar event hider
// @namespace    https://zachsaucier.com/
// @version      0.1
// @description  Hide calendar events specified
// @author       Zach Saucier
// @match        https://calendar.google.com/calendar/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    var eventList = [
        "Test event"
    ];

    // The actual functionality to remove the events
    function hideEventsInList() {
        var spans = document.querySelectorAll(".cpchip span, .chip-caption span");

        for(var i = 0; i < spans.length; i++) {
            var span = spans[i];
            for(var j = 0; j < eventList.length; j++) {
                 if(span.innerText.indexOf(eventList[j]) > -1) {
                     var parent = span.parentNode.parentNode.parentNode.parentNode;
                     parent.parentNode.removeChild(parent);
                 }
            }
        }
    }
    hideEventsInList();

    var observeDOM = (function() {
        var MutationObserver = window.MutationObserver || window.WebKitMutationObserver,
            eventListenerSupported = window.addEventListener;

        return function(obj, callback) {
            if(MutationObserver) {
                // Define a new observer
                var obs = new MutationObserver(function(mutations, observer){
                    if(mutations[0].addedNodes.length || mutations[0].removedNodes.length )
                        callback();
                });
                // Have the observer observe foo for changes in children
                obs.observe(obj, {childList: true, subtree: true});
            }
            else if(eventListenerSupported ) {
                obj.addEventListener('DOMNodeInserted', callback, false);
                obj.addEventListener('DOMNodeRemoved', callback, false);
            }
        };
    })();

    // Observe a specific DOM element:
    observeDOM(document.body.querySelector("#mainbody"), function() { 
        hideEventsInList();
    });
})();

I also uploaded this to GreasyFork for easy install here.