2013-04-24 20 views
14

La nostra applicazione necessita di un elenco completo dei file e delle cartelle dell'utente. Usiamo files.list() tramite la libreria Javascript (essenzialmente lo stesso codice mostrato nell'API reference ufficiale come esempio).files.list() restituisce in modo riproducibile l'elenco incompleto in ambito "drive.files"

Utilizziamo l'ambito "drive.files".

Esaminando la risposta alla lista, troviamo che alcuni file mancano sempre. Ho effettuato vari test per comprendere il problema:

  • I file esistono chiaramente. Si presentano nello Google Drive Webapp e, se li richiedo esplicitamente tramite ID, posso ottenerli tramite l'API senza problemi.
  • È riproducibile, mancano sempre gli stessi file.
  • Non è transitorio. Ho provato il giorno dopo e mancano ancora gli stessi file. Conosco alcuni effetti strani nell'API che vanno via dopo un po 'di tempo ma non questo.
  • Non è una cosa sola (ad esempio, alcune cose strane sono andate male durante il caricamento). Se ripeto con un account Google completamente diverso, mancano ancora i file. Di una piccola serie di 147 file caricati in un test 4 mancano la chiamata files.list, in un altro test con gli stessi 147 file su un altro account mancano 23 file.
  • Si verifica solo quando utilizzo l'ambito drive.files. Se rilasso l'oscilloscopio su drive vengono restituiti tutti i file. Se guardi "Dettagli" nella webapp di Google Drive anche i file mancanti vengono mostrati come creati dalla nostra applicazione. Quindi non sembra che abbiano perso la loro origine in qualche modo.
  • Si verifica anche quando si specifica una query di ricerca. Se chiamo files.list con un termine di ricerca "q: modifiedDate>" 2012-06-04T12: 00: 00 "" che dovrebbe restituire tutti i file, mancano gli stessi file.
  • Ho implementato nuovamente la stessa cosa della pura chiamata REST all'API per escludere che si tratti di un problema con la libreria Javascript. L'errore rimane.

Aggiornamento: ho potuto rintracciarlo ad un problema con il cercapersone e il parametro maxResults. Se utilizzo valori diversi, l'API restituisce un numero diverso di articoli:

Con maxResults=100 ottengo 100 + 100 + 7 = 207.

Con maxResults=99 ottengo 99 + 99 + 28 = 226.

Con maxResults=101 Ottengo 101 + 101 + 0 = 202.

L'ultimo risultato è interessante che mi ha dato un nextLink indicando che ci sono più risultati ma l'array di elementi nell'ultima risposta era effettivamente vuoto. Questo da solo potrebbe indicare un bug.

Tuttavia, questo si verifica solo nell'ambito drive.file, i conteggi sono coerenti nell'intero intervallo drive.

Sarei lieto di ascoltare le idee per una soluzione alternativa. Sono a conoscenza di altri modi per tenere traccia dei file degli utenti, ad es. usando il feed delle modifiche. Lo sto già usando, ma per una parte specifica della nostra applicazione ho semplicemente bisogno di un elenco affidabile e completo di tutti gli articoli della nostra applicazione nell'account di un utente.

Un'altra nota: abbiamo avuto altri problemi con lo scope "drive.files" (vedere Listing files with search query returns out-of-scope results (drive.files.list call, using drive.files scope)). Questa risultò essere una soluzione facile. Forse questo problema è correlato.

+0

Sembra un bug, lo stiamo osservando. –

+0

@BurcuDogan C'è qualche aggiornamento su questo? C'è una pagina di modifiche che posso controllare di volta in volta per vedere se è stato risolto? – auval

+0

Ci sono aggiornamenti su questo problema? Eseguiamo ripetutamente questo numero di elenchi di file non affidabili mentre estendiamo la nostra integrazione con Google Drive della nostra applicazione. – Lenau

risposta

0

C'è qualche differenza tra i file che appartengono a "condiviso con me" e file/cartelle personali, è stato il problema per me? Il modo in cui viene presentato in Google Drive non è lo stesso risultato ottenuto durante la ricerca senza i flag corretti.

Ho scoperto quando ho fatto questa lista di file con tutte le cartelle, che ho dovuto includere da dove dovrebbe essere l'ambito di ricerca dei file. - Include file cancellati - Includi file condivisi per me