2017-02-13 3 views
0

이것은 최근에 wpercy와 Kieran이 대답 한 질문 중 하나입니다. 저는 Zapier에서 Zap을 개선하기 위해 파이썬 코드를 만들려고합니다. 첫 번째 단계는 쉼표로 구분 된 이메일이 포함 된 제공된 (Google 제공) 문자열 변수에서 참석자 이메일을 추출하는 것이 었습니다.파이썬으로 google 캘린더 이벤트에서 참석자 응답을 추출하십시오.

내가 지금 알아 내야 할 것은 참석자 응답을 추출하여 쌍을 만들거나 Zap의 나머지 단계가 수행 될 때마다 해당 참석자 이메일 주소를 따르는 방법입니다 (각 이메일/참석자마다 한 번 수행됨). .

다음은 성공적으로 테스트 한 솔루션 코드입니다. 그것은 단지 이메일을 다루는 : 여기

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

가 키어런에 의해 제공되는 다른 솔루션입니다 :

Google 캘린더 데이터는 다음과 같습니다
[{'Email': email.strip()} for email in input_data['attendeeEmails'].split(',')] 

:

attendees: 
    1: 
     displayName: Doug Christensen 
     email: [email protected] 
     responseStatus: needsAction 
    2: 
     displayName: Doug Christensen 
     email: [email protected] 
     responseStatus: needsAction 
    3: 
     self: true 
     email: [email protected] 
     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에서 "error"라고 말함).

저는 참석자 이메일이 2 개의 Google 변수 "참석자 이메일"및 "참석자 이메일"로 제공된다는 사실에 상당히 혼란 스럽습니다. 하나는 Zap의 Python 코드에 'Attendees [] Email'이라는 변수를 전달하는 변수에 실제로 나타나고 다른 하나는 'Attendee Emails'로 표시됩니다. 참석자 응답에는 '참석자 [] ResponseStatus'로 나타나는 옵션이 하나만 있습니다.

분명히 전문가는 아니지만이 레이블은 나에게 약간의 데이터 구조를 제안합니까? '[]'이 포함되면 전자 메일을 추출하고 참석자 응답과 페어링하는 더욱 세련된 방법이 가능하다고 생각하게 만듭니다.

각 이메일/응답 쌍마다 다음 Zap 단계가 한 번 수행되도록 Python 코드가 이메일 및 해당 참석자 응답을 반환하기를 바랍니다.

다시 안내해 주시면 감사하겠습니다.

더그

답변

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 
+0

이 많은 sooh 감사처럼 사용하는 것입니다! 나는 "response"의 일부 철자를 수정하고 "responseList []"에 "responseStatus []"를 변경하는 비법을 만들었다. –