2012-12-24 3 views
7

내가 관리하는 Google 도메인의 파일의 상태가 좋지 않습니다. 루트 디렉토리에 수천 개의 파일이 있습니다. 이 파일을 식별하여 '내 드라이브'아래의 폴더로 옮기고 싶습니다.Google 드라이브 API : 상위 항목이없는 파일 목록

API를 사용하여 이러한 고아 파일 중 하나의 부모를 나열하면 결과가 빈 배열이됩니다. 파일이 고아인지 확인하기 위해 내 도메인의 모든 파일을 반복하고 각각에 대한 부모 목록을 요청할 수 있습니다. 목록이 비어 있으면 파일이 고아임을 알 수 있습니다.

그러나 이것은 매우 천천히 진행됩니다.

어쨌든 드라이브 API를 사용하여 부모가없는 파일을 검색 할 수 있습니까?

q 매개 변수의 "parents"필드는 부모 목록에 일부 ID가 포함되도록 지정할 수 있기 때문에 유용하지는 않습니다.

업데이트 : 문서 계층 구조의 루트에 진정으로 항목을 찾을 수있는 빠른 방법을 찾기 위해 노력하고있어

. 즉, 이들은 "내 드라이브"의 형제이며 "내 드라이브"의 자식이 아닙니다. 자바에서

+0

이것은 버그처럼 들리지만 파일이 부모를 가지지 않도록해야합니다. –

+2

드라이브 UI를 사용하면 명시 적으로 파일을이 상황으로 이동할 수 있지만 이에 대해 조언합니다. 이러한 파일을 쿼리 할 수 ​​있다면 좋을 것입니다. – snae

+0

해결책을 찾았습니까? – casolorz

답변

3

:

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()); 
} 

'루트'파일 또는 폴더가 루트

+0

"My Drive"에있는 파일과 폴더를 찾습니다. 실제로는 루트가 아니지만 "My Drive"폴더에 isRoot = true 속성이 있습니다. 나는 문서 계층 구조의 실제 루트에있는 항목, 즉 "My Drive"의 형제를 빠르게 찾을 수있는 방법을 찾고 있습니다. 이를 반영하기 위해 질문을 업데이트했습니다. – FishesCycle

+0

@Jasper 당신이 사용하는 라이브러리에 대한 링크를 제공 할 수 있습니다. 어떤 execute() 함수도 찾을 수 없습니다. – Prakhar

+0

다음을 사용하여 만들 수있는 com.google.api.services.drive.Drive를 사용하여 요청을 얻을 수 있습니다. 'com.google.api.services.drive.Drive.Builder.Builder (HttpTransport, JsonFactory, HttpRequestInitializer)'. – BrunoJCM

1

브 루트에 있지만 간단하고 작동하면 상위 폴더가 있습니다 ..

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

검색어에 사용하려고 시도하십시오.

'root' in parents 
+0

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

0

documentation은 다음 검색어를 권장합니다 : is:unorganized owner:me.

관련 문제