クライアントを Gmail と同期する

このドキュメントでは、Gmail API を使用してクライアントを同期する方法について説明します。

ほとんどのアプリ シナリオでは、クライアントを Gmail と同期することが重要です。同期方法には、フル同期部分同期の 2 つがあります。クライアントが Gmail に初めて接続するときや、その他のまれなシナリオでは、完全な同期が必要です。クライアントが最近同期した場合は、部分同期はフル同期よりも軽量な代替手段となります。プッシュ通知を使用して、必要なときにのみリアルタイムで部分同期をトリガーすることもできます。これにより、不要なポーリングを回避できます。

完全同期

アプリが Gmail に初めて接続する場合、または部分同期が利用できない場合は、完全同期を実行する必要があります。完全同期オペレーションでは、アプリは目的のために必要な数の最新のメッセージまたはスレッドを取得して保存する必要があります。たとえば、アプリに最近のメッセージのリストが表示される場合、ユーザーが最初に表示された数件のメッセージを超えてスクロールしたときに、応答性の高いインターフェースを実現するために十分なメッセージを取得してキャッシュに保存することが望ましいでしょう。

フル同期を行う手順は次のとおりです。

  1. messages.list メソッドを呼び出して、メッセージ ID の最初のページを取得します。

  2. リスト リクエストで返された各メッセージに対して、messages.get メソッド リクエストのバッチ リクエストを作成します。

    アプリでメッセージの内容を表示する場合は、アプリが初めてメッセージを取得するときに Formatformat=FULL または format=RAW に設定し、結果をキャッシュに保存して、追加の取得オペレーションを回避する必要があります。以前にキャッシュに保存されたメッセージを取得する場合は、format=MINIMAL を使用してレスポンスのサイズを小さくする必要があります。これは、labelIds のみが変更される可能性があるためです。

  3. 更新をキャッシュに保存されている結果にマージします。アプリは、今後の部分同期のために、最新のメッセージの historyIdlist レスポンスの最初のメッセージ)を保存する必要があります。

部分同期

アプリが最近同期された場合は、history.list メソッドを使用して部分同期を実行し、リクエストで指定する必要がある startHistoryId クエリ パラメータよりも新しいすべての履歴レコードを返します。

startHistoryId クエリ パラメータは、最近のメッセージの historyId に設定する必要があります。最近のメッセージの historyId を取得するには、messages.get メソッドまたは messages.list メソッドを使用します。完全同期または部分同期中に値を設定して、後で使用することもできます。

返される History オブジェクトには、指定された startHistoryId 以降のメッセージ ID と、メッセージの追加やラベルの変更など、各メッセージの変更タイプが含まれます。

制限事項

通常、履歴レコードは少なくとも 1 週間、多くの場合それ以上利用できます。ただし、記録が利用可能な期間は大幅に短くなる可能性があり、まれに記録が利用できないことがあります。

クライアントから提供された startHistoryId が履歴レコードの利用可能な範囲外にある場合、Gmail API は HTTP 404 エラー レスポンスを返します。この場合、クライアントは完全な同期を実行する必要があります。