2017-02-13 9 views
0

これは最近wpercyとKieranによって回答された方の質問です。 私はZapierでZapを改良するためにPythonコードを流行させようとしています。 最初の段階では、コンマで区切られた電子メールを含む(Googleによる)文字列変数から出席者の電子メールを抽出しました。Googleのカレンダーイベントからの出席者の回答をPythonで抽出します

今私が理解しなければならないのは、出席者の回答を抽出してペアにするか、Zapの残りのステップが各電子メール/出席者ごとに1回実行されるため、対応する参加者の電子メールアドレス。

ここに私が正常にテストしたソリューションコードがあります。それはちょうど電子メールを扱う:だから私は取得したい

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 

:ここ

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

キーランが提供する他のソリューションです:

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

Googleカレンダーのデータは次のようになります"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コードに渡す変数には、「参加者[]電子メール」、もう1人は「参加者電子メール」として表示されます。出席者の回答には、「出席者[] ResponseStatus」として現れるオプションが1つしかありません。

私ははっきりと何の専門家だが、これらのラベルは、私には、データ構造のビットを示唆? '[]'が含まれていると、より洗練された電子メールの抽出方法と出席者の応答とのペアリングが可能になると私は考えています。

私は、Pythonのコードは、電子メールと以下のザップの手順は、各電子メール/応答のペアに1回実行されるような方法でそれに対応する出席者の応答を返すようにしたいです。

この場合も、すべてのガイダンスは高く評価されます。

ダグ

答えて

0

あなたのエラーの理由は、あなたが括弧()で、リスト内の要素にアクセスしようとしているということです。角括弧[]を使用してください。

これを修正した後でさえ、これをはるかにpythonicのやり方で行うことができます。独自の変数を使用してリスト内の自分の位置を追跡する代わりに、組み込み関数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ありがとうございましたようにあなたはそれを使用します!私はいくつかのスペル( "レスポンス")を修正し、 "responseStatus []"を "responseList []"に変更することを1回微調整しました。 –

関連する問題