This is a plugin for Obsidian that searches your Obsidian vault for tasks that contain dates, and generates a calendar in iCal format that can be imported into your preferred calendar application.
Periodically, the plugin will:
- Find all tasks in your vault (A valid task is a Markdown checkbox (either checked or not) that contains a date in the format YYYY-MM-DD or YYYY-MM-D),
- Generate an iCal calendar file that contains all of these tasks,
- Tasks are appended with an emoji to quickly see their status (✅ completed, 🔲 to do, 🏃 in progress, 🚫 canceled),
- Optionally, calendar can be saved to your filesystem, and/or
- Optionally, calendar can be stored on GitHub Gist.
If you choose to store your calendar on Gist, you can then use the URL to your Gist in your preferred calendar application.
Your vault will be scanned every now and then for changes to tasks to keep your calendar up-to-date.
This plugin has rudimentary support for Obsidian Tasks emoji format. However it is not mandatory.
iCal has various settings which I will try to explain.
Obsidian supports two types of internal link: wikilinks and markdown.
Wikilinks can look like: [[Link to document]]
or [[Link to document|Link title]]
. Markdown links look like [Link title](Link to document)
.
This option will keep the links in your event just as they appear.
This option will keep just the Link title
and remove the link. If the wikilink does not have a title then it will be removed.
This option will take the Link title
however if that does not exist, then it will use Link to document
.
This option will remove them entirely from your event summary.
This is to allow you to exclude completed tasks from being added to your calendar. It will also remove tasks from your calendar once they are marked as completed.
Enabling this will unlock the Save calendar to GitHub Gist settings.
Enabling this will unlock the Save calendar to disk settings.
Enabling this will tell iCal that it should periodically scan your vault for tasks within Markdown files and generate a calendar. It also unlocks the How often should we parse and save your calendar? (minutes) setting.
The number of minutes between each scan to generate and save your calendar. Must be a number between 1 and 1,440 (24 hours).
Saving to GitHub Gist means you will be given a URL that you can import into your calendar applications.
To be able to write the calendar file to GitHub Gist, you need to generate a personal access token.
For further information please see How to generate a GitHub Personal Access Token.
The Gist ID is the Gist that you want to write your calendar to.
For further information please see How to generate a GitHub Gist ID.
This is used only to generate the URL to your GitHub Gist.
This should match the filename that you used when you created the GitHub Gist.
For further information please see How to generate a GitHub Gist ID.
This is the URL that you need to copy and paste into your preferred calendar application.
Saving your calendar to disk means you can import it into a desktop application (like Thunderbird) or do further processing if you're that way inclined. For example, maybe you want to email the calendar to someone. I don't know.
This is the path, relative to the root directory of your vault, in which the calendar file will be written. An empty string means the root directory of your vault.
Give the calendar file a name.
Choose the extension of the filename.
This is just a way to copy the path and filename and extension so it's easy to find on your filesystem.
This turns on logging so that you can see what the extension is doing. It can be helpful to diagnose what is happening if there are any issues.
In the Obsidian menu, go to View and select Toggle Developer Tools. The log messages will appear in the Console tab.
A GitHub Personal Access Token is a long random string that allows iCal to write to your GitHub Gist on your behalf.
To generate one, do the following:
- Go to https://github.com/settings/tokens/new
Note
: Enter something like "Obsidian iCal".Expiration
: Best practice is to expire tokens periodically but that would be frustrating. Chooseno expiration
if you want to.Select scopes
: Choosegist
only.- Click
Generate token
- Copy the personal access token (It starts in
ghp_
) - Paste it into the GitHub personal access token setting.
If your personal access token is leaked, go to the GitHub tokens page and click Delete
. Then follow these steps again to generate a new one.
- Go to here to create a new Gist: https://gist.github.com/
Gist description
: Enter anything you like. Eg: My calendar that is generated from my Obsidian vaultFilename including extension
: You could useobsidian.ics
or your vault name. Whatever you enter here, you will need to enter it in the iCal settings so it knows which file to write to.- For the contents of the Gist, just put anything in there. The iCal plugin will overwrite it.
- Click
Create secret gist
After you create the Gist, you will see the URL is something like:
https://gist.github.com/andrewbrereton/11c399ce6c0d89c5f8101edb9a2b76d6
|------------| |------------------------------|
Username Gist ID
-
Take the
Username
part and enter it in GitHub username setting. -
Take the
Gist ID
part and enter it in GitHub Gist ID setting.
- Google Calendar
- Apple Calendar
- Microsoft Outlook
- Lightning extension for Mozilla Thunderbird and SeaMonkey
- Yahoo! Calendar
- GNU Emacs
- HCL Domino (formerly IBM Notes and Lotus Notes)
- GNOME Evolution
- eM Client
- Novell GroupWise