使用python

时间:2017-02-13 22:29:34

标签: python calendar zapier

这是对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变量“Attendee Emails”和“Attendees Email”。其中一个实际显示在变量中,以传递给Zap的Python代码为'Attendees [] Email',而另一个显示为'Attendee Emails'。对于与会者的回复,只有一个选项显示为'Attendees [] ResponseStatus'。

我显然不是专家,但这些标签向我建议了一些数据结构?当包含'[]'时,让我认为可以采用更优雅的方式提取电子邮件并与参与者的回复配对。

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

同样,我们将非常感谢任何指导。

道格

1 个答案:

答案 0 :(得分:0)

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

即使在解决了这个问题之后,你也可以采用更加传播的方式来做到这一点。您应该使用内置函数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