2016-04-25 10 views
1

Google People APIを使用してユーザーの接続を取得していますが、people.connections.listを呼び出して検索結果にメールアドレスや電話番号などが含まれていないため合計50の結果私は人をポーリングしています:batchGetは、一度に最大50人のユーザーしか受け入れないユーザーのデータを取得します。これは正常に動作し、結果を何回か繰り返してすべての連絡先をインポートできます。すばらしいです!Google People APIとの連絡先の数を確認する

しかし、この設定とループする必要があるため(何人かのユーザーには何千もの接続があります)、私たちは完了するまで(基本的に)リダイレクトする処理を繰り返しています。これもうまくいきますが、リダイレクト画面にプログレスバーを表示したいのですが、これを行うにはユーザーの接続数を知る必要があります。私は、people.connections.listが返すことができる合計結果の数を決める方法を見つけることができないようです(フィルタや同期トークンが渡されない限り)。誰もが私たちがpeople.connections.listでループする必要がある接続の合計数を判断できる方法を知っていますか?

+0

ためrequest mask中などの電子メールアドレス、電話番号を要求すべきであることをあなたはまた、連絡先リストから「その他連絡先」を取得してくださいますか? – heffaklump

+0

いいえ、私はプライマリの連絡先だけを取得しています。 –

答えて

0

あなたはどの言語を使用していますか?これはJavaの私のために働く。

https://people.googleapis.com/v1/people/me/connections?pageSize=500&requestMask.includeField=person.names%2Cperson.emailAddresses&key={YOUR_API_KEY} 
+0

私はPHPを使用しています。あなたの擬似コードは、私が想定している接続リストのサイズを取得しますが、後にあるのは、制限が指定されていない接続の総数です。例えばユーザーに4500の連絡先があり、そのうちの50件を取得したとします。私は連絡先の約1%を取り出しました。その後、私は50%をフェッチして2%まで増やします。私が探しているのは、私が見つけることができないAPIから4500という値を決定する方法です。 –

-2

人の合計数を返す必要があり、リストの応答に最近追加totalItemsフィールドがあります。また、あなたは、このURLのようなものを使用した場合に含まれるフィールドとするものを追加でき

// Get the user's connections 
ListConnectionsResponse r = peopleService.people().connections() 
     .list("people/me") 
     .setPageSize(500) 
     // specify fields to be returned 
     .setRequestMaskIncludeField("person.names,person.emailAddresses") 
     .execute(); 

List<Person> connections = r.getConnections(); 
System.out.println(connections.size()); 

リスト内の

しかし、より良い修正は、リストの呼び出し

+0

'totalItems'はカウントを取得する正しい方法です(したがって、プログレスバーを実装する)。 'RequestMask'はプログレスバーでは役に立ちませんが、返されるレスポンスオブジェクトのフィールド数を制限するのに役立ちます。ちなみに、なぜこの答えは下落していますか?答えに必要な唯一の編集は、「より良い修正はそれです」 – kunal

関連する問題