上のWeb UIとは異なりAPI Explorerと私のC#アプリケーションと比較して。GMailのV1のAPIのUsers.messages結果は、私は次のクエリを使用していた論理AND/OR
のGmailのWeb UI
ノート、会話ビューが無効になっています:
私は会話のビューを有効にした場合、私は、Web UIによって返された9つのスレッドを取得します。スレッドAPIを使用して、私は7スレッドを取得します。
https://developers.google.com/gmail/api/v1/reference/users/messages/listのAPIエクスプローラ:
{
"messages": [
{
"id": "15686dcf7989e60f"
},
{
"id": "1566bce4412a439d"
},
{
"id": "156327e51b979f48"
},
{
"id": "1560f0caf9297ab9"
},
{
"id": "155f01dba1c3ad77"
},
{
"id": "1538bce006a95a84"
},
{
"id": "15342e9d99b4d3f6"
}
]
}
私は私のC#アプリケーションでAPIエクスプローラと同じ結果を参照してください。 APIとWeb UIの間に切断があるようです。 Web UIは10個の結果を返し、APIは10個のうち7個だけを返します(10個のサブセットであることを確認しています)。
UPDATE:
それはAPIがリテラルとしてクエリを扱うことが判明しました。 Web UIのクエリを引用符で囲むことは、APIと同じ結果をもたらします。
これは、APIを使用して元の検索を複製する方法の問題を残します。 3つのクエリを実行してから、3つすべての結果を返すだけですか?あなたが複雑なクエリになると、それが少しの解析作業になります。
私はメッセージIDは全て3つのクエリとIの結果セットがある場合、個別に3つのAND演算条件を実行し、その結果を引いて、Web UIの結果を再現しようとした2
UPDATE APIコールと同じ7つの結果が得られます。テストに使用
コード:
var service = GMailServiceManager.Instance.Service;
var resultsNo = GMailUtils.GetItems(service, null, "No", true);
var resultsMans = GMailUtils.GetItems(service, null, "Man's", true);
var resultsSky = GMailUtils.GetItems(service, null, "Sky", true);
var anded = from nos in resultsNo.Items
from manses in resultsMans.Items
from skys in resultsSky.Items
where nos.Id == manses.Id && nos.Id == skys.Id
select nos.Id;
GMailUtils.GetItems()
は単にAPIリクエストや他のいくつかのアプリケーション固有のルーチンのバッチ処理を処理します。これは、バッチ内の各アイテムのグループを取得するには、次を使用します。
UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List("me");
request.Q = search;
request.Fields = "messages(id),nextPageToken";
request.PageToken = pageToken;
// Logging and batching here
...
request.Execute();
...
私は今のWeb UIは、他のヒットを思い付く方法は考えています。
電子メール(ノートではない男の)中No
Man
と個別Sky
上の他のヒット:ヒットのハイライトは、www.no-mans-sky.com
2内のインスタンス(彼らは同じスレッドにいる)です。
アップデート3
私は検索用語Man's
にほとんどのテストを行うことを決めたWeb UIに戻って。 Web UIでは
、私は数百のヒットを得る:APIが引用されたWeb UIに一致する
:
"Man's"
については
を私は11本の安打を得ます
{
"messages": [
{
"id": "15686dcf7989e60f"
},
{
"id": "1566bce4412a439d"
},
{
"id": "156327e51b979f48"
},
{
"id": "1560f0caf9297ab9"
},
{
"id": "155f01dba1c3ad77"
},
{
"id": "1538bce006a95a84"
},
{
"id": "15342e9d99b4d3f6"
},
{
"id": "13da4a6d7a4159b2"
},
{
"id": "13da4a502eca7dff"
},
{
"id": "12e70fbf3d655ac8"
},
{
"id": "1278adc3ed72f6a8"
}
]
}
これに基づいて、Web-UIスタイルのクエリではなく、APIのクエリが文字列リテラルとして扱われるように見えます。私がAPIを使ってWeb UIの結果を再現する方法を見つけることができないので、バグのように思えます。
UIのスレッドを取得し、[メッセージの一覧表示](https://developers.google。com/gmail/api/v1/reference /ユーザー/メッセージ/リスト)。代わりに[スレッドを一覧表示する](https://developers.google.com/gmail/api/v1/reference/users/threads/list)の場合は一致しますか? – Tholle
私はUIでスレッドをオフにしており、UIはAPIより多くの結果を得ています。 – adamdc78
私は参照してください。会話のビューを表示し、スレッドをリストする場合は、両方のケースで多くの結果がありますか?私はそれがどのように動作するのか100%確信していませんが、ヒットした会話内のすべてのメッセージをUIが表示し、API付きのメッセージをリスト表示することはできません。 – Tholle