Evernote API findNotesMetadata で取得する totalNotes が正しくない
Evernote API findNotesMetadata で取得する totalNotes が以下の条件で正しい値を返さない
条件
- NoteFilter.words が指定されている(空ではない)
- NoteFilter.notebookGuid の指定なし
- linkedNotebook(非共有ノートブック)が存在するアカウント
- linkedNotebook に検索に該当するノートが含まれている
この条件で NoteStore.findNotesMetadata を呼び出した場合
戻り値 NotesMetadataList の totalNotes は linkedNotebook 内の該当ノート数を含む値が返るが NotesMetadataList.notes には linkedNotebook に存在するノートは含まれない
また、offset, maxNotes を使用した検索結果は、linkedNotebook 内の該当ノートを含む(実際には取得できない)挙動をするため
note1
note2
note3(linked)
note4
note5(linked)
note6
1. offset=0, maxNotes=3 で findNotesMetadata
note1note2
notes.count=2, totalNotes=5
2. offset=3, maxNotes=3 で findNotesMetadata
note4
note6
notes.count=1, totalNotes=5
2回目の offset に 1回目の結果 notes.count=2 を用いて決定してしまうと
同じノートを複数取得したり、取りこぼす可能性がある
対応
- totalNotes を2回目以降の findNotesMetadata 実行条件としない
- 2回目以降の offset は notes.count ではなく、前回の maxNotes を用いる
- 結果が notes.count = 0 の条件でループを抜ける
どなたか findNotesMetadata で linkedNotebook 内のノートも取得する方法知ってたら、教えて下さい!!
コメント