Automating OneNote with AutoHotKey to be a Journal V1.1

Here is Version 1.1 of the script, it has some logging and I have tried to make the config simpler. I use OneNote more and more in my daily work. I wanted to have the ability to make a journal function accessible from anywhere.

Goal:To be able to hit Win+J and have OneNote open the right page and date and time stamp the entry.


When I hit Win+J it opens OneNote at the right week (I have one page per week with the heading of Week 1, Week 2, …, Week 52) goes to the end of the entry and inserts a line and then makes a check box with the date and time as the value.

This allows me to simplify my weekly review as it is hard to miss a checkbox with a date in it. Also it now has the start as a ever increasing number so the tasks are soreted in the list for review time.

I also created a second function Ctrl+Shift+Alt+Win+J which makes 52 pages in OneNote (You need to have the section open that you want the pages created in) for the journal.


You will need to modify the OneNote Url in the code. This is at the top of the file.

OneNoteJournalSection := “onenote:< PATH TO SECTION STORING WEEKLY PAGES >

Using a Windows Live SkyDrive synced path. This will open the local copy of the OneNote file.
OneNoteJournalSection := “onenote:”

[code lang=”autohotkey”]
; Goes to the week in OneNote for the journal.
; Created by Jon Bullen (
; Leave a comment on the site if you have issues.
; V1.1
; Added logging and set default to the ISO week. Play with number if you need to shift the week number.
; V1.0
; – Inital Version to the World

#SingleInstance force

; Set the path below to the section containing the week pages.
OneNoteJournalSection := "onenote:PATH_TO_SECTION_STORING_WEEKLY_PAGES"

; If you need to offset the week modify the offset below.
JournalWeekOffset := 1

; ———————————————————————————————
; You should not have to modify anything below here.. I said should 🙂

OneNoteUrl := OneNoteJournalSection . "#Week%20"

FileRecycle, %A_ScriptFullPath%.log
FormatTime, TimeString , , hh:mm:ss

StringRight, WeekNumber, A_YWeek, 2
FileAppend, %TimeString% WeekNumber: %A_YWeek% `n, %A_ScriptFullPath%.log
FileAppend, %TimeString% WeekNumber: %WeekNumber% `n, %A_ScriptFullPath%.log

;StringReplace, WeekNumber, WeekNumber, 0, ,All
FileAppend, %TimeString% WeekNumber: %WeekNumber% `n, %A_ScriptFullPath%.log

; Allows you to offset the week if needed.
;FWIW… I found a solution for Win7 in this old thread:
;HKEY_CURRENT_USER\Control Panel\International\iFirstWeekOfYear
WeekNumber := WeekNumber + JournalWeekOffset

FileAppend, %TimeString% WeekNumber: %WeekNumber% `n, %A_ScriptFullPath%.log
FileAppend, %TimeString% FullURL: %OneNoteUrl%%WeekNumber% `n, %A_ScriptFullPath%.log

Run, %OneNoteUrl%%WeekNumber%

; Generate Date and Time Stamp
FormatTime, TimeStringShort,, yyyyMMddHHmmss
FormatTime, TimeStringLong,, dddd MMMM d, yyyy HH:mm:ss

WinWaitActive, Week %WeekNumber% – Microsoft OneNote
Sleep, 500
SendInput, ^{End}
SendInput, ^{End}
Sleep, 500
SendInput, {Enter}{Enter}
SendInput, ———————————————–
Sleep, 500
SendInput, {Enter}
SendInput, ^1
SendInput, (%TimeStringShort%) %TimeStringLong%
SendInput, {Enter}


; Create all the weeks in the year in the current section.
; To use this Create a new section on OneNote
; Click in the title of the first untilted page.
; Press Shift+Ctrl+Win+Alt+J and it will make the pages.
;Run, %OneNoteUrl%
Loop, 52
SendInput, ^n
SendInput, Week %A_Index%
Sleep, 300




I’m a principal engineer working at Microsoft. I have run and supported services for over twenty years and worked in multiple countries. I love working with passionate people and new technology.


  1. One update needed for me to get this to work. The path should be:
    Add the rest of the path yourself with %20 where there are spaces. Locally it’s in the documents folder by default.
    Thanks for the script, it is great. I might tweak it a bit for my own needs but it’s really, really, helpful.


  2. I am glad it is of help! If you are not synced to SkyDrive then yes you need to do a local path translation.

  3. Hi Sytone
    The above functionality is exactly what I’m looking for but I’m not sure where I’m pasting the code to?
    Could you please point me in the right direction?

    Thank you.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.