使用 python 从谷歌日历事件中提取与会者响应

Posted

技术标签:

【中文标题】使用 python 从谷歌日历事件中提取与会者响应【英文标题】:Extract attendee response from google calendar event with python 【发布时间】:2017-07-02 01:38:15 【问题描述】:

这是 wpercy 和 Kieran 最近回答的问题的后续问题。 我正在尝试编写一些 Python 代码来改进 Zapier 中的 Zap。 第一阶段涉及从提供的(由 Google 提供的)字符串变量中提取与会者电子邮件,该变量包含用逗号分隔的电子邮件。

我现在需要弄清楚的是如何提取与会者的回复并将它们配对,或者以某种方式让他们在执行 Zap 中的其余步骤时关注其相应的与会者电子邮件地址,每封电子邮件/与会者一次。

这是我测试成功的解决方案代码。它只处理电子邮件:

emails = []
attendeeList = input_data['attendeeEmails'].split(',')
for email in attendeeList:
    a = 'Email' : email.strip()
    emails.append(a)
return emails

这是 Kieran 提供的另一个解决方案:

['Email': email.strip() for email in input_data['attendeeEmails'].split(',')]

Google 日历数据如下所示:

attendees:
    1:
        displayName:    Doug Christensen
        email:  xxxx@gmail.com
        responseStatus: needsAction
    2:
        displayName:    Doug Christensen
        email:  yyyyyy@gmail.com
        responseStatus: needsAction
    3:
        self:   true
        email:  zzzz@xyzmadscience.com
        organizer:  true
        responseStatus: accepted

所以我想获得“responseStatus”,我唯一能想到的就是:

emails = []
position = 0
responseList = input_data['attendeeReponses'].split(',')
attendeeList = input_data['attendeeEmails'].split(',')
for email in attendeeList:
    a = 'Email' : email.strip(), 'responseStatus' :       reponseStatus(position).strip()
    a = 'Email' : email.strip()
    emails.append(a)
    position += 1
return emails

...但这不起作用(在 Zapier 中说“错误”)。

与会者电子邮件在 2 个 Google 变量“与会者电子邮件”和“与会者电子邮件”中可用这一事实让我很困惑。一个实际上显示在要传递给 Zap 的 Python 代码的变量中作为“参加者 [] 电子邮件”,而另一个显示为“参加者电子邮件”。对于与会者响应,只有一个选项显示为“与会者 []响应状态”。

我显然不是专家,但这些标签向我暗示了一些数据结构?当包含“[]”时,让我认为可以使用一种更优雅的方法来提取电子邮件并与与会者的回复配对。

我希望 Python 代码以某种方式返回电子邮件及其相应的与会者响应,以便为每个电子邮件/响应对执行一次以下 Zap 步骤。

再次感谢任何指导。

道格

【问题讨论】:

【参考方案1】:

您的错误原因是您试图访问列表中带有括号() 的元素。您应该使用括号[]

即使在解决了这个问题之后,您也可以以一种更加 Python 的方式来执行此操作。您应该使用内置函数enumerate(),而不是使用自己的变量来跟踪您在列表中的位置。这将为您跟踪索引,您不必手动增加它。

你会这样使用它

emails = []

responseList = input_data['attendeeReponses'].split(',')
attendeeList = input_data['attendeeEmails'].split(',')
for i,email in enumerate(attendeeList):
    a = 'Email': email.strip(), 'responseStatus': reponseStatus[i].strip()
    emails.append(a)
return emails

【讨论】:

非常感谢!我更正了我的一些拼写(“response”)并进行了 1 次调整,将“responseStatus[]”更改为“responseList[]”,效果很好!

以上是关于使用 python 从谷歌日历事件中提取与会者响应的主要内容,如果未能解决你的问题,请参考以下文章

谷歌日历关注事件更新

与会者在使用服务帐户、谷歌日历 API 创建活动时未收到会议邀请

无法从谷歌日历同步到我的 .Net Mvc Web App

谷歌日历 API 从谷歌日历设置中获取工作时间数据

来自Google日历的即将发生的事件在python中

如何以编程方式将访客与会者添加到保存时的 GSuite 日历事件