2016-09-07 18 views
-1

GoogleカレンダーのAPIを使い始めたばかりなので、これまでのところ良い結果が得られました。私はそうGoogleカレンダーの出席者は必ずしも同じ順序ではない

events = { 

       # other stuff here and then this 

       'items': [ 

        # lots of stuff here, followed by 

        'attendees': [ 
        { 
         'email': email1, 
         'displayName': name1 
        }, 
        { 
         'email': email2, 
         'displayName': name2 
        }, 
        ], 

        ### 

       ] 
      } 

は罰金行くが、私はそれらにアクセスするとき、私は彼らのための保証はありませんよ、それらを追加するように、events辞書に自分の名前と電子メールで参加者を追加します。

for event in events['items']: 
    print "email1 = " + str(event['attendees'][0]['email']) 
    print "email2 = " + str(event['attendees'][1]['email']) 

とすることができます。そして、私はPythonのリストであるalways have their order preservedを学びました。リストの中の辞書にリストのインデックスでアクセスしたいので便利です。しかし、私が学んだことは、0インデックスがを指すことがあり、時にはemail2を指す場合があるということです。なぜ矛盾?それは、GoogleカレンダーのAPIに固有のものか、または注文保存の前提を緩和するPythonリスト内に辞書オブジェクトを持つことについて何かありますか?それとも私は行方不明ですか?

+0

誰かがdownvoteを親切に説明すると、質問を改善するために編集したり、それが属していない場合は削除したりすることができます。 –

+0

Googleカレンダーのクエリを手動で行い、結果が異なる注文でGoogleに提供されているかどうかを確認することができます。もしそうなら、あなたはそれについて何もできません。 –

+0

リファレンスサイトを使って試しました。間違いなく、出席者は一揃いになっていることもあり、時には出席者が他の人にいることもあります。私は彼らがPythonリストに置かれて以来、その順序は必ず保持されるべきだと考えていました。私はそれが事実ではないことに驚いていたので、私はここで私の理解が外れていたかどうか、あるいはそれについて何かできることがあるかどうかを見たいと思った。 –

答えて

0

@Colonel Thirty Twoのように、リストは順序を保持していますが、リストにデータを返す方法は、送信された順序と同じではありません。あなたはより多くの何

for event in events['items']: 
    print "email1 = " + str(event['attendees'][0]['email']) 
    print "email2 = " + str(event['attendees'][1]['email']) 

ようなもので、出席者の検索のための順でカウントするように欠けている場合は、出席者と、この順序の矛盾は不便であり、非常にいくつかのフィールドは、GoogleカレンダーのAPIを使用して書き込み可能であるということです。ただし、書き込み可能なものはcommentsです。そこで、そのフィールドに値を追加して、出席者を識別可能にしました。識別子は、単純なif文と各出席者のemaildisplayNameの取得で私を助けたように

'attendees': [ 
      { 
       'email': agent_email, 
       'displayName': agent_name, 
       'comment': 'agent' 
      }, 
      { 
       'email': event_attendee_email, 
       'displayName': event_attendee_name, 
       'comment': 'client' 
      }, 

commentを使用するように。

for i in range(len(event['attendees'])): 
     if event['attendees'][i]['comment'] == 'client': 
      event['attendees'][i]['displayName'] = event_attendee_name 
      event['attendees'][i]['email'] = event_attendee_email 

は、今ではGoogleカレンダーのAPIは、私はそれらを追加したものとは異なる順序で私に戻って私の参加者を提出することは重要ではありません。出席者を検索して変更できるようになりました。問題が解決しました。

関連する問題