アプリケーションには、ユーザーのファイルとフォルダーの完全なリストが必要です。files.list()
ライブラリを介して使用します(基本的に、例としてJavascript
公式に示されているのと同じコードです)。API reference
drive.files
" " スコープを使用します。
リストへの応答を調べると、一部のファイルが常に欠落していることがわかります。問題を理解するためにさまざまなテストを行いました。
- ファイルは明らかに存在します。それらは に表示され、
Google Drive Webapp
ID を介して明示的に要求すると、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 を呼び出します) 」を参照してください)。これは簡単な修正であることが判明しました。おそらく、この問題は関連しています。