2012-12-24 10 views
7

Pliki w domenie Google, którymi zarządzam, przeszły do ​​złego stanu; istnieją tysiące plików znajdujących się w katalogu głównym. Chcę zidentyfikować te pliki i przenieść je do folderu "Mój dysk".Interfejs API Dysku Google: wyświetla pliki bez rodzica

Kiedy używam interfejsu API do wyświetlania listy rodziców dla jednego z tych osieroconych plików, wynikiem jest pusta tablica. Aby ustalić, czy plik jest osierocony, mogę powtórzyć wszystkie pliki w mojej domenie i poprosić o listę rodziców dla każdej z nich. Jeśli lista jest pusta, wiem, że plik został osierocony.

Ale to jest ohydnie wolne.

Czy mimo to można użyć Drive API do wyszukiwania plików, które nie mają rodziców?

Pole "rodzice" dla parametru q nie wydaje się przydatne, ponieważ można tylko określić, że lista rodziców zawiera jakiś identyfikator.

Aktualizacja:

Próbuję znaleźć szybki sposób znaleźć przedmioty, które są naprawdę u podstaw hierarchii dokumentów. Oznacza to, że są rodzeństwem "My Drive", a nie dziećmi "My Drive".

+0

To brzmi jak błąd, nie powinniśmy pozwolić, aby pliki nie miały żadnych rodziców. –

+2

Interfejs dysku jawnie pozwala przenosić pliki do tej sytuacji, ale odradza. Byłoby wspaniale móc wyszukiwać takie pliki. – snae

+0

Czy kiedykolwiek znalazłeś rozwiązanie? – casolorz

Odpowiedz

3

W Javie:

List<File> result = new ArrayList<File>(); 
Files.List request = drive.files().list(); 
request.setQ("'root'" + " in parents"); 

FileList files = null; 
files = request.execute(); 

for (com.google.api.services.drive.model.File element : files.getItems()) { 
    System.out.println(element.getTitle()); 
} 

'root' to folder nadrzędny, jeśli plik lub folder jest w korzeniu

+0

Spowoduje to wyszukanie plików i folderów w folderze "Mój dysk", który w rzeczywistości nie jest katalogiem głównym, ale w sposób mylący folder "Mój dysk" ma właściwość isRoot = true. Próbuję znaleźć sposób na szybkie zlokalizowanie elementów w rzeczywistym katalogu głównym hierarchii dokumentów, np. Rodzeństwo "Mojego dysku". Zaktualizowałem moje pytanie, aby to odzwierciedlić. – FishesCycle

+0

@Jasper możesz podać link do używanej biblioteki, ponieważ nie mogę znaleźć żadnej funkcji execute() – Prakhar

+0

Możesz uzyskać żądanie za pomocą 'com.google.api.services.drive.Drive', które można utworzyć za pomocą 'com.google.api.services.drive.Drive.Builder.Builder (HttpTransport, JsonFactory, HttpRequestInitializer)'. – BrunoJCM

1

Brute, ale prosty i działa ..

do { 
     try { 
      FileList files = request.execute(); 

      for (File f : files.getItems()) { 
       if (f.getParents().size() == 0) { 
         System.out.println("Orphan found:\t" + f.getTitle()); 

       orphans.add(f); 
       } 
      } 

      request.setPageToken(files.getNextPageToken()); 
     } catch (IOException e) { 
      System.out.println("An error occurred: " + e); 
      request.setPageToken(null); 
     } 
    } while (request.getPageToken() != null 
      && request.getPageToken().length() > 0); 
0

Spróbuj użyć tego w zapytaniu:

'root' in parents 
+0

https://gsuite-developers.googleblog.com/2012/08/5-things-you-didnt-know-you-could-do.html –

0

Polecenie documentation zaleca następujące zapytanie: is:unorganized owner:me.

Powiązane problemy