The instructions at Org-mode does not cover the Windows case. I explain how you can get the sync between Google calendar and org-mode in Windows.
ical2org.py
Get the ical2org.py
script from https://github.com/asoroa/ical2org.py. You
have to have Python installed, and also need to install icalendar
and pytz
:
> pip install icalendar
> pip install pytz
Follow step 2 in this instruction to get the private URL for your calendar.
First check if you can download your calendar with Invoke-WebRequest
:
> Invoke-WebRequest -URI <url to your private Google calendar>
If it works, make a PowerShell script file, convert-gcal-to-org.ps1
:
# customize these
$ICS2ORG = "<path to ical2org.py>"
$ICSFILE = "<path for icsfile>"
$ORGFILE = "<path to orgfile>"
$URL = "<url to your private Google calendar>"
# no customization needed below
$Content = (Invoke-WebRequest -URI $URL).Content
[System.IO.File]::WriteAllLines($ICSFILE, $Content)
python $ICS2ORG $ICSFILE $ORGFILE
for example:
# customize these
$ICS2ORG = "~/bin/ical2org.py"
$ICSFILE = "~/bin/gcal-shared.ical"
$ORGFILE = "~/gcal.org"
$URL = "https://www.google.com/calendar/ical/...../basic.ics"
# no customization needed below
$Content = (Invoke-WebRequest -URI $URL).Content
[System.IO.File]::WriteAllLines($ICSFILE, $Content)
python $ICS2ORG $ICSFILE $ORGFILE
Now try the script and see if it works:
> convert-gcal-to-org.ps1
If you have the output org
file in your org-agenda-files
list, you will
see the entries from Google calendar when you update your agenda in Emacs.
You can install IntelliAdmin Cron to periodically run the script and sync your
calendars with org-mode
. Here is a blog post about this specific cron utility.
Then, use the following to set up the cronjob, with appropriate schedule settings:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
-file C:\PATH\TO\convert-gcal-to-org.ps1
For example: