<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://performiq.com/kb/index.php?action=history&amp;feed=atom&amp;title=Accessing_Google_Calendar_with_Python</id>
	<title>Accessing Google Calendar with Python - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://performiq.com/kb/index.php?action=history&amp;feed=atom&amp;title=Accessing_Google_Calendar_with_Python"/>
	<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=Accessing_Google_Calendar_with_Python&amp;action=history"/>
	<updated>2026-05-18T11:19:48Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://performiq.com/kb/index.php?title=Accessing_Google_Calendar_with_Python&amp;diff=1489&amp;oldid=prev</id>
		<title>PeterHarding: /* Overview */</title>
		<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=Accessing_Google_Calendar_with_Python&amp;diff=1489&amp;oldid=prev"/>
		<updated>2008-02-25T05:37:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Overview&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:37, 25 February 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Overview=&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Overview=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Google provides a [[Python]] module to interact with Google Calendar&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A sample script is provided below&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Script==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Script==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PeterHarding</name></author>
	</entry>
	<entry>
		<id>https://performiq.com/kb/index.php?title=Accessing_Google_Calendar_with_Python&amp;diff=1488&amp;oldid=prev</id>
		<title>PeterHarding: New page: =Overview=  ==Script== &lt;pre&gt; #!/usr/bin/env python  from GoogleCalendar import *  gCalMNG = GoogleCalendarMng() gCalMNG.connect (&quot;some_login@gmail.com&quot;, &quot;some_password&quot;)  calendar = gCalMN...</title>
		<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=Accessing_Google_Calendar_with_Python&amp;diff=1488&amp;oldid=prev"/>
		<updated>2008-02-25T05:36:43Z</updated>

		<summary type="html">&lt;p&gt;New page: =Overview=  ==Script== &amp;lt;pre&amp;gt; #!/usr/bin/env python  from GoogleCalendar import *  gCalMNG = GoogleCalendarMng() gCalMNG.connect (&amp;quot;some_login@gmail.com&amp;quot;, &amp;quot;some_password&amp;quot;)  calendar = gCalMN...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Overview=&lt;br /&gt;
&lt;br /&gt;
==Script==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
from GoogleCalendar import *&lt;br /&gt;
&lt;br /&gt;
gCalMNG = GoogleCalendarMng()&lt;br /&gt;
gCalMNG.connect (&amp;quot;some_login@gmail.com&amp;quot;, &amp;quot;some_password&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
calendar = gCalMNG.getCalendar (&amp;quot;myCalendarForTest&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
events = calendar.getEvents()&lt;br /&gt;
&lt;br /&gt;
for event in events:&lt;br /&gt;
    print event.getTitle()&lt;br /&gt;
    print event.getContent()&lt;br /&gt;
&lt;br /&gt;
    print time.strftime(&amp;quot;%Y-%m-%dT%H:%M:%S&amp;quot; ,&lt;br /&gt;
                         time.localtime(event.getStartTime()))&lt;br /&gt;
&lt;br /&gt;
    print time.strftime(&amp;quot;%Y-%m-%dT%H:%M:%S&amp;quot; ,&lt;br /&gt;
                         time.localtime(event.getEndTime()))&lt;br /&gt;
&lt;br /&gt;
#----- Adding new events -----------------------------------------------------------------------&lt;br /&gt;
# There are two mechanisms:&lt;br /&gt;
&lt;br /&gt;
#  - Creating a single event, and adding this one into calendar.&lt;br /&gt;
&lt;br /&gt;
ev = newEvent(&amp;quot;Lluis&amp;quot;, &amp;quot;lluis.gesa@gmail.org&amp;quot;,&lt;br /&gt;
              &amp;quot;Meeting&amp;quot;, &amp;quot;With Aleix to talk about work&amp;quot;, &amp;quot;La Garriga&amp;quot;,&lt;br /&gt;
               time.mktime((2007,03,27,19,30,00)),&lt;br /&gt;
               time.mktime((2007,03,27,21,30,00)))&lt;br /&gt;
&lt;br /&gt;
calendar.addEvent (ev)&lt;br /&gt;
&lt;br /&gt;
#  - Creating directly the event into calendar:&lt;br /&gt;
&lt;br /&gt;
calendar.newEvent (&amp;quot;Meeting&amp;quot;, &amp;quot;With Aleix to talk about work&amp;quot;, &amp;quot;La Garriga&amp;quot;,&lt;br /&gt;
                    time.mktime((2007,03,27,19,30,00)),&lt;br /&gt;
                    time.mktime((2007,03,27,21,30,00)))&lt;br /&gt;
&lt;br /&gt;
# with this second mechanisms, the user and email used are the same of owner of calendar&lt;br /&gt;
&lt;br /&gt;
#----- Updating events -----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
events = calendar.getEvents()&lt;br /&gt;
&lt;br /&gt;
for event in events:&lt;br /&gt;
    if event.getTitle() == &amp;quot;Meeting&amp;quot;:&lt;br /&gt;
        event.setContent (event.getContent() + &amp;quot;Changes on location&amp;quot;)&lt;br /&gt;
        event.setLocation (&amp;quot;Barcelona&amp;quot;)&lt;br /&gt;
        event.update()&lt;br /&gt;
&lt;br /&gt;
#----- Deleting events -----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
events = calendar.getEvents()&lt;br /&gt;
&lt;br /&gt;
for event in events:&lt;br /&gt;
    if event.getTitle() == &amp;quot;Meeting&amp;quot;:&lt;br /&gt;
        event.delete()&lt;br /&gt;
&lt;br /&gt;
#----- Adding comments ------------------------------------------------------------&lt;br /&gt;
#  Like events, there are two methods:&lt;br /&gt;
#  -  Directly over event&lt;br /&gt;
&lt;br /&gt;
events = calendar.getEvents()&lt;br /&gt;
&lt;br /&gt;
for event in events:&lt;br /&gt;
    if event.getTitle() == &amp;quot;Meeting&amp;quot;:&lt;br /&gt;
         event.newComment (&amp;quot;comment test&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
#  - Using  a global method for create.&lt;br /&gt;
&lt;br /&gt;
events = calendar.getEvents()&lt;br /&gt;
&lt;br /&gt;
for event in events:&lt;br /&gt;
    if event.getTitle() == &amp;quot;Meeting&amp;quot;:&lt;br /&gt;
         cmt = newComment (&amp;quot;some_user_mail&amp;quot;, &amp;quot;some_email&amp;quot;,  &amp;quot;Coment test2&amp;quot;)&lt;br /&gt;
         event.addComment (cmt)&lt;br /&gt;
&lt;br /&gt;
#----- Updating comments -----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
events = calendar.getEvents()&lt;br /&gt;
&lt;br /&gt;
for event in events:&lt;br /&gt;
    if event.getTitle() == &amp;quot;Meeting&amp;quot;:&lt;br /&gt;
       comments = event.getComments()&lt;br /&gt;
       for comment in comments:&lt;br /&gt;
           if comment.getContent() == &amp;quot;comment test&amp;quot;:&lt;br /&gt;
               comment.setContent(&amp;quot;Updated&amp;quot;)&lt;br /&gt;
               comment.update()&lt;br /&gt;
&lt;br /&gt;
#----- Deleting comments -----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
events = calendar.getEvents()&lt;br /&gt;
&lt;br /&gt;
for event in events:&lt;br /&gt;
    if event.getTitle() == &amp;quot;Meeting&amp;quot;:&lt;br /&gt;
       comments = event.getComments()&lt;br /&gt;
       for comment in comments:&lt;br /&gt;
           if comment.getContent() == &amp;quot;Updated&amp;quot;:&lt;br /&gt;
               comment.delete()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PeterHarding</name></author>
	</entry>
</feed>