This a module for MagicMirror
https://magicmirror.builders/
https://github.com/MichMich/MagicMirror
This module displays a Google Doc as note from your Google account.
Navigate to your MagicMirror modules
directory and execute
git clone https://github.com/No3x/MMM-GoogleDocs-Notes.git
Enter the new MMM-GoogleDocs-Notes
directory and execute npm install
.
Obtain token (see Authentication & Authorization)
Add the module to your config (see Sample Configuration).
Unfortunately Google does not provide an API for Keep to query the content for a note from there. Therefore, we use a Google Doc that can be edited by multiple users.
Before version 3 the module used the OAuth 2.0 out-of-band (OOB) authentication flow. It was basically the manual copy/paste option, as a legacy flow developed to support native clients which do not have a redirect URI to accept the credentials after a user approves an OAuth consent request. This authentication mechanism used before was deprecated by Google.
With version 3 the authentication changed to OAuth 2.0 for TV and Limited-Input Device Applications. The scope https://www.googleapis.com/auth/drive.file
is used which means the module can access files created by the module only and has no access to the rest of your drive.
sequenceDiagram
autonumber
actor You
participant Any Device as Any Device (PC/Tablet/Phone)
participant Module as MM Module
participant Google
Module->>+Google: Request Authorization
Google-->>-Module: URL & 🔑
Module->>+Module: Display URL & 🔑
You->>+Any Device: Open URL & enter 🔑
Any Device->>+Google: Send URL & 🔑
Google-->>-Any Device: Done
Any Device-->>-You: Done
Module->>+Google: Check if authorized
Google-->>-Module: Access Token 🔐
Module->>+Google: Use Google Drive API 🔐
drive.file
.This changes imply
notesPrefix
. Now it is possible to access files created by the module only. Therefore, the module will create a new Google Doc if not present (by using notesPrefix
). This implies there is support for only one note at a time currently.It is very important that you follow these steps. Before this module will work, you need to grant authorization for this module to access your Google Drive account.
The process is described in the INSTALL.md file.
Magic Mirror Notes
.Magic Mirror Notes
.client_secret.json
and copy it to your MMM-GoogleDocs-Notes directory.node authorize.mjs
sudo -u pi -- node authorize.mjs
(Change pi
to the user that runs the Magic Mirror application).If everything went well, you should see MMM-GoogleDocs-Notes is authorized
in your console.
Note: This application uses the following scopes:
https://www.googleapis.com/auth/drive.file
Option | Description |
---|---|
maxNotes |
The maximum number of your most recent documents to display Type Number Defaults to 2 |
pollFrequency |
How frequently to poll Drive for documents. Type Number Defaults to 300000 (5 minutes) |
showDatePosted |
Whether to show the date when the note was created Type Boolean Defaults to true (5 minutes) |
dateFormatExact |
the date format to use for the exact posted date (not today and not yesterday). Uses Moment.js supported date formats (https://momentjs.com/docs/#/displaying/) Type String Defaults to YYYY-MM-DD HH:mm |
dateFormatShort |
the short date format to use for the posted date (today and yesterday). Uses Moment.js supported date formats (https://momentjs.com/docs/#/displaying/) Type String Defaults to HH:mm |
notesPrefix |
the prefix of your documents titles you store your note in. Type String Defaults to MMM |
The current procedure: it queries for all documents, filters by titles that start with notesPrefix
, orders by the last edited document and displays at most maxNotes
number of noes.
{
module: 'MMM-GoogleDocs-Notes',
header: "Notes",
position: 'top_right',
classes: 'default everyone',
config: {
maxNotes: 2,
pollFrequency: 5 * 60 * 1000, //5 minutes;
showDatePosted: true,
dateFormatExact: 'YYYY-MM-DD HH:mm',
dateFormatShort: 'HH:mm',
notesPrefix: 'MMM'
}
},
Since the OAuth-Authorization-Token is stored in the users home directory make sure to execute node authorize.mjs
as the same user that runs the MagicMirror instance (user pi
in my case).
To ensure it execute the command explicitly as user pi
: sudo -u pi -- node authorize.mjs
While setup watch the logs: tail -f /home/pi/.pm2/logs/mm-out.log
. Log messages are prefixed with [MMM-GoogleDocs-Notes]
. Watch out for scope errors and urls to open your browser in case the scope is not sufficient (like The drive API returned an error: Error: Insufficient Permission: Request had insufficient authentication scopes.
).
File > Page setup > Page color
Negative
that is unfortunately not properly exported. But you can change the colors of the diagram in the source document - with this the export works fine.This module uses the scaffolding of https://github.com/jclarke0000/MMM-MyNotes.git which served as starting point. Most functionality was taken from it but the interaction with the Drive API was added and some modifications were made.