Get Outlook Events Plug

Hey Logseq community! I’ve built a plugin that reads from your local Outlook file to add events from your calendar as blocks. Being in an enterprise environment, I can’t just use the Microsoft Graph API or ICAL subscriptions. Also I wanted to be able to control exactly where and how the blocks where added.

I’m a data engineer and not an app developer. So, this is the first time I’ve developed something like this. I haven’t submitted it to the app store yet as I think there is some opportunity for refactoring and feature additions with feedback from the community.

Because I have it reading from the local Outlook COM, I went the route of building a Flask API in the backend that accesses the COM and exposes the events through a REST API endpoint on the localhost. This does involve the user ensuring the API service is running to use the plugin, but I have also provided a script in the repo for automatically starting the service at login. Below is the tl:dr about the plugin, but the full details can be read in the ReadMe in the repo. I look forward to your feedback.

What it does

The plugin fetches calendar events from your local Windows Outlook file and inserts them directly into your daily journal pages using a simple /Get Events slash command.

Key Features

  • :counterclockwise_arrows_button: One-command import - Type /Get Events on any journal page to pull in that day’s calendar

  • :clipboard: Custom formatting - Events appear in chronological order and formatted the way you design in the configuration settings

  • :link: Meeting links - Automatically extracts and formats Teams/Zoom/Meet links as clickable buttons

  • :clockwise_vertical_arrows: Recurring events - Identifies recurring meetings with emoji indicators

  • :gear: Flexible settings - Configure time format (12/24hr), meeting URL detection, bracket linking, etc.

Example Output

Weekly Team Standup 🔃 [Join Meeting](https://teams.microsoft.com/l/meetup-join/...)
event-time:: 9:00 AM
event-duration:: 00:30:00
attendees:: [Homer Simpson], [Diana Prince]

How it works

  • Logseq plugin (JavaScript) handles the UI and formatting

  • Local API service (Python) reads from Outlook’s COM interface

  • No cloud dependencies - everything stays on your machine

  • Optional automation - Can auto-start the API service on login

Current status

Working great on Windows with Outlook desktop. Looking for feedback on:

  • Feature requests, Ideas for enhanced formatting or data extraction

  • Interest from Mac users (would require different calendar integration in the API)

Now, that is excellent. Thank you very much for your great work and for sharing it!

Least I can do is provide some feedback that you requested. Please note that these are not requests and there are no expectations :wink:

  • Feature ideas:
    • setting for plugin to automatically load the events for the current date the first time that logseq is opened.
    • setting to customize the default labels (event-time, event-duration, attendees, location)`
    • setting to include the date with the event-time (may seem redundant, but sometimes I move meetings to their own “project” page)
  • Ideas for Enhanced formatting
    • default formatting could include double-brackets for the attendees (easily sorted via the settings you already provided though)
  • Ideas for Data extraction
    • Ability to process certain patterns in the subject as block tags
      • e.g., Meeting on big important project [SOX] [Compliance]
1 Like

Thanks for the great suggestions! I’ve logged them as issues in the repo and I think I can incorporate most pretty easily. I’ll have to research the dynamic generation on page creation though.

Can you say more about the processing patterns as block tags? How would you see this working? A list of words or phrases that would automatically get square brackets?

1 Like

@etc , Wanted to let you know that I updated the plugin to resolve a couple of your suggestions:

  • include date & time: I added the ability to configure the datetime to whatever custom format you prefer
  • double-brackets for attendees: there is now a configuration to include double brackets for attendees

Regarding the default labels, there was already the ability to change the labels to whatever you like using the Output Format Template. Unless I’m misunderstanding your suggestion?

I wanted to follow-up about your data extraction idea. I think there is a function available in Logseq for getting a list of all current pages. Would adding a configuration to auto-add brackets for any words that match existing pages meet what you’re trying to achieve?

1 Like

Thanks for the update! I’m sorry I missed your previous message.

Really cool. Thank you for considering the suggestions and even implementing a few!

I was thinking the title of an event could be parsed so that any words following a determined pattern became tags in the output to Logseq.

  • Personally, I am partial to single brackets in event titles and email subjects.
    • e.g., “Interview w. John Doe [Recruitment] [Operations] [Pos-3876]
      • In the output to Logseq, this could become “Interview w. John Doe #Recruitment #Operations #Pos-3876

The thought is similar to formatting attendee names with double-brackets. To be able to group related events in the tag page or with queries recover all applicable blocks, events and entries.