Jump to content
Pennyworth

[REQUEST] Microsoft OneNote Workflow

Recommended Posts

I can't help you with building it, but I can point you in the right direction.

 

Basically, you'll need to write the workflow in AppleScript. To start off, just write the AppleScripts that will be able to do these things. Create the functions to search and to create notes. You'll be able to find what is possible by opening up the application "Script Editor"; then "Open Dictionary..."; and select "Microsoft OneNote." That will give you a reference of commands and objects that OneNote makes available to use, and those are the ones you'll need.

 

After that, just read up on AppleScript enough to figure out how to implement them.

Share this post


Link to post

Basically, you'll need to write the workflow in AppleScript.

 

Thanks for the feedback. Unfortunately, OneNote doesn't have an AppleScript dictionary. Just to confirm, I Googled around and found others complaining of this too. Is that game-over as far as Alfred is concerned?

Share this post


Link to post

Is that game-over as far as Alfred is concerned?

 

Probably.

 

The other route to go would be to see how OneNote stores its data. More than likely, the data is stored in ~/Library/Application Support/Microsoft/OneNote or somewhere in ~/Documents. I don't know... you just have to poke around.

 

If you can find the folder, then you'll probably find some files with some strange extension ".onenotedb" or "modb" or something (I really have no idea). Or, perhaps easier, it'll just be ".db." However, the data might be spread across multiple data bases. The next thing to find out is what type of database it is. With any luck, it'll be a sqlite3 database. Otherwise, it might be some sort of MS database. If it's sqlite3, then you can read / write data to get your workflow that way. If it's an MS database, then you'll have to see if there is some sort of command line tool available to read from / write to the db. Then, reverse engineer the structure, and you're good to go.

 

If the latter way works out, then make sure you make a copy of the db to test on (when writing) so that you don't muss it up.

Share this post


Link to post

If it's an MS database, then you'll have to see if there is some sort of command line tool available to read from / write to the db. Then, reverse engineer the structure, and you're good to go.

 

If the latter way works out, then make sure you make a copy of the db to test on (when writing) so that you don't muss it up.

 

Since it's a Mac App Store app, the note files are containerized in the following directory:

 

~/Library/Containers/com.microsoft.onenote.mac/Data/Library/Application Support/Microsoft User Data/OneNote/

 

They're stored as an offline cache (synced to the master file on Microsoft OneDrive) in a proprietary .onecache extension, with assets of each note stored separately as .onebin files.

 

It's not pretty and I don't have enough skills to reverse engineer this. Command-line tools are available for Windows, and they're limited to repairing the database and other maintenance tasks.

Edited by Pennyworth

Share this post


Link to post

If you just want to get Alfred to open a search for you, and not display the search results in Alfred, you can do it with Applescript UI scripting.  Here is a basic workflow that searches all notebooks:

 

https://www.dropbox.com/s/bknw2b8xv93m7zf/Search%20Microsoft%20OneNote.alfredworkflow?dl=0

 

Thanks dfay! Your solution gets me most of the way there! If there was only a way to pass through the search results to Alfred, we'd be golden.

Share this post


Link to post

That little script works great.  Except when Onenote is minimized... how would you change the applescript to first activate the window (reopen)?  One note just seems to stay minimized, even if I change the applescript by adding activate and reopen.

Share this post


Link to post

Try using this as an AppleScript action. It'll copy whatever you have selected (in any window/app), open OneNote, create a new note, and paste into that note's body. 

 

on alfred_script(q)
  tell application "System Events" to keystroke "c" using {command down}
  delay 1
  tell application "Microsoft OneNote" to activate
  tell application "System Events" to keystroke "n" using {command down}
  tell application "System Events" to keystroke tab
  tell application "System Events" to keystroke "v" using {command down}
end alfred_script

 

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...