2016-08-15 3 views
2

上のWeb UIとは異なりAPI Explorerと私のC#アプリケーションと比較して。GMailのV1のAPIのUsers.messages結果は、私は次のクエリを使用していた論理AND/OR

のGmailのWeb UI

Web UI

ノート、会話ビューが無効になっています:

Conversation Setting

私は会話のビューを有効にした場合、私は、Web UIによって返された9つのスレッドを取得します。スレッドAPIを使用して、私は7スレッドを取得します。


https://developers.google.com/gmail/api/v1/reference/users/messages/listのAPIエクスプローラ:

API Explorer

{ 
"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つすべての結果を返すだけですか?あなたが複雑なクエリになると、それが少しの解析作業になります。

With literals

私はメッセージ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は、他のヒットを思い付く方法は考えています。

enter image description here

電子メール(ノートではない男の)中NoManと個別Sky上の他のヒット:ヒットのハイライトは、www.no-mans-sky.com 2内のインスタンス(彼らは同じスレッドにいる)です。

アップデート3

私は検索用語Man'sにほとんどのテストを行うことを決めたWeb UIに戻って。 Web UIでは

、私は数百のヒットを得る:APIが引用されたWeb UIに一致する

Web UI Quoted Man's

"Man's"については

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の結果を再現する方法を見つけることができないので、バグのように思えます。

+0

UIのスレッドを取得し、[メッセージの一覧表示](https://developers.google。com/gmail/api/v1/reference /ユーザー/メッセージ/リスト)。代わりに[スレッドを一覧表示する](https://developers.google.com/gmail/api/v1/reference/users/threads/list)の場合は一致しますか? – Tholle

+0

私はUIでスレッドをオフにしており、UIはAPIより多くの結果を得ています。 – adamdc78

+0

私は参照してください。会話のビューを表示し、スレッドをリストする場合は、両方のケースで多くの結果がありますか?私はそれがどのように動作するのか100%確信していませんが、ヒットした会話内のすべてのメッセージをUIが表示し、API付きのメッセージをリスト表示することはできません。 – Tholle

答えて

0

自分のGmailで試してみましたが、一部のメールが1つのスレッドで見つかったことがわかりました。

はここに私の例である:私は私の対象として単語時間トラッカーを使用

、およびGmailのUIは私に4つの電子メールの結果を与えます。しかし、合計結果を数えれば合計12の結果が得られます。 6 A、3から電子メールCからB、2から1だから要求

GET https://www.googleapis.com/gmail/v1/users/example%40google.com/messages?q=subject%3A(time+tracker)&fields=messages(id%2CthreadId)&key={YOUR_API_KEY} 

やGmailのAPIでTry it partを使用する場合

enter image description here

からD.

enter image description here

GMail UIのように12のIDの結果が表示されます。

enter image description here

上の図を見ると、あなたは同じスレッドに属するすべての電子メールが同一threadIdを持っていることがわかります。

したがって、threadIdを使用して、リクエストに含まれる電子メールの数を判断してください。私はこの質問を誤解した場合、誰か教えてください。

+0

質問で述べたように、私は会話ビューを使用していません。つまり、Web UIにスレッドがないことを意味します。さらに、Web UIは、APIが実行しないヒットを返しています( 'Man'sまたは' Mans'の代わりに '' Man'')。コメントからスレッドテストについての情報も追加します。 – adamdc78

関連する問題