2012-10-29 7 views
6

Sto testando l'API "Modifiche" di Google Drive e ho alcune domande.Google Drive - Modifiche: elenco API - Rileva modifiche a livello di cartella

Aspettativa: Ho una struttura ad albero delle cartelle in 'I miei file' con i file al loro interno. Vorrei chiamare le modifiche: list API per rilevare se gli articoli sono stati aggiunti/modificati/cancellati all'interno di quell'identificatore di cartella specifico.

API Explorer cercato: https://developers.google.com/drive/v2/reference/changes/list

Domande:

  1. Non vedo alcuna possibilità di passare un ID specifico cartella per questa API per ottenere il 'largestChangeId'. Sembra che questa API non supporti il ​​parm 'q'? È possibile?

  2. Come soluzione alternativa, si pensava di memorizzare l'attributo 'modifiedDate' per quella cartella e usarlo per confrontarlo la volta successiva. Ma, non viene aggiornato quando gli elementi vengono aggiornati all'interno di quella cartella. Non dovrebbe funzionare come in Windows dove la data di modifica della cartella viene aggiornata quando il suo contenuto viene aggiornato?

Vorrei sentire se è possibile rilevare le modifiche a livello di cartella.

Grazie

[EDIT]

soluzione che ha funzionato:

  1. Usa file: list per elencare tutti. campi selezionati: oggetti/id, articoli/ModifiedDate, articoli/genitori/id, articoli/title

  2. Get a partire cartella ID (ad esempio per 'MyRootFolder' utilizzando Titolo di ricerca)

  3. Traverse attraverso la sub-albero struttura (linking parents: id e id file) utilizzando la ricerca array ricorsiva e ottieni max modifiedDate e conteggi totali dei file.
  4. Store max dataData e conteggi di file nella memoria dell'app.
  5. Per le chiamate successive, confrontare la nuova data massima modificata con quella memorizzata e confrontare i conteggi dei file totali con quelli memorizzati. Se uno dei due non corrisponde, il contenuto di "MyRootFolder" è stato aggiornato.

risposta

2

Questo non è attualmente possibile direttamente con l'API - mi dispiace!

Penso che la soluzione migliore sarebbe utilizzare il normale feed delle modifiche e filtrare i risultati nel codice con quelli con i genitori corretti.

+0

La soluzione fornita non funziona con gli oggetti eliminati: non ci sono informazioni oltre l'ID per l'oggetto eliminato in modo permanente nel feed delle modifiche – Jerome

+0

Giocare con "Modifiche: elenco" La risposta completa dell'API potrebbe non funzionare per il mio requisito. Motivo, devo abilitare il flag "includeDeleted" perché devo anche rilevare le rimozioni di file all'interno di una cartella. Ma non è utile in quanto gli elementi eliminati nella risposta non hanno ID genitori. Quindi, non sono in grado di identificare la cartella in cui esistevano prima dell'eliminazione - non sono interessato ai file eliminati al di fuori del mio ambito di cartelle. Ho aggiornato il mio post con la soluzione. –

+0

Sì, hai ragione, ma questa è una funzione utente. Perché la tua app dovrebbe sapere qualcosa sui dati cancellati? L'utente l'ha cancellato. L'ID è lì per ripulire i tuoi sistemi. Come sviluppatore, questo non è perfetto per me, ma penso che le intenzioni basate sull'utente siano corrette qui. –

1

drive.changes.list google drive API ora consente agli utenti di passare il parametro "startChangeId".

Im utilizzando il valore che ottengo per "largestChangeId" dal risultato dell'API precedente, in modo da poter incrementare in modo incrementale le modifiche apportate dall'utente, evitando la necessità di ricostruire l'intero albero.

come mai sono sorpreso di vedere perché non supportano il parametro "includeDeleted" insieme al parametro "startChangeId".