14

アプリケーションには、ユーザーのファイルとフォルダーの完全なリストが必要です。files.list()ライブラリを介して使用します(基本的に、例としてJavascript公式に示されているのと同じコードです)。API reference

drive.files" " スコープを使用します。

リストへの応答を調べると、一部のファイルが常に欠落していることがわかります。問題を理解するためにさまざまなテストを行いました。

  • ファイルは明らかに存在します。それらは に表示され、Google Drive WebappID を介して明示的に要求すると、API を介して問題なく取得できます。
  • 再現可能で、常に同じファイルが欠落しています。
  • 一時的なものではありません。翌日試してみましたが、それでも同じファイルが見つかりません。しばらくすると消えるAPIの奇妙な効果をいくつか知っていますが、これはそうではありません。
  • これは 1 回限りのことではありません (たとえば、アップロード中に奇妙なことが起こりました)。完全に別の Google アカウントでもう一度繰り返すと、ファイルが見つかりません。1 つのテストでアップロードされた 147 個のファイルの小さなセットのうち 4 個がfiles.list呼び出しで欠落し、別のアカウントで同じ 147 個のファイルを使用した別のテストでは、23 個のファイルが欠落しています。
  • drive.filesスコープを使用した場合にのみ発生します。スコープを緩和すると、driveすべてのファイルが返されます。Google ドライブ Web アプリの「詳細」を見ると、不足しているファイルもアプリケーションによって作成されたものとして表示されます。したがって、彼らがどういうわけか起源を失ったようには見えません。
  • 検索クエリを指定したときにも発生します。「q: modifiedDate > '2012-06-04T12:00:00'」という検索用語を使用して files.list を呼び出すと、すべてのファイルが返されますが、同じファイルが見つかりません。
  • Javascript ライブラリに問題があることを除外するために、API への純粋な REST 呼び出しと同じことを再実装しました。エラーは残ります。

更新:maxResultsページングとパラメーターの問題まで追跡できました。異なる値を使用すると、API は異なる数のアイテムを返します。

maxResults=100私は 100+100+7=207 を得ます。

maxResults=99私は99 + 99 + 28 = 226を取得します。

maxResults=101私は101 + 101 + 0 = 202を取得します。

最後の結果は興味深いものでnextLink、さらに結果があることを示していましたが、最後の応答の項目配列は実際には空でした。これだけでもバグを示している可能性があります。

それでも、これはスコープ内でのみ発生しdrive.file、カウントはdriveスコープ全体で一貫しています。

回避策のアイデアをいただければ幸いです。変更フィードを使用するなど、ユーザーファイルを追跡する他の方法を知っています。私はすでにそれを使用していますが、アプリケーションの特定の部分については、ユーザーのアカウントにあるアプリケーションのすべてのアイテムの信頼できる完全なリストが必要です。

もう 1 つ注意: 「drive.files」スコープには以前にも別の問題がありました (「検索クエリを使用してファイルを一覧表示すると、範囲外の結果が返される (drive.files スコープを使用して drive.files.list を呼び出します) 」を参照してください)。これは簡単な修正であることが判明しました。おそらく、この問題は関連しています。

4

1 に答える 1

0

「共有された」ファイルと自分のファイル/フォルダーに属するファイルに違いはありますか?それは私の問題でしたか? Google ドライブでの表示方法は、正しいフラグなしで検索した場合と同じ結果ではありませんでした。

このファイルリストをすべてのフォルダーで作成したときに、ファイルの検索範囲があるべき場所から含める必要があることがわかりました。- 削除されたファイルを含める - 私に共有されたファイルを含める

于 2015-11-20T14:32:36.943 に答える