2012-11-26 2 views
4

this example. MediafileUpload를 폴더 생성과 함께 사용할 수 있습니까? parent_id를 어떻게 가져올 수 있습니까?Google 드라이브 API를 사용하여 Python에서 새 폴더를 만들려면 어떻게해야합니까?

https://developers.google.com/drive/folder에서

난 그냥 내가 마임 = "응용 프로그램/vnd.google-apps.folder"하지만 어떻게 파이썬에서 프로그래밍이 튜토리얼을 구현합니까를 사용해야 알아?

의견을 보내 주셔서 감사합니다.

답변

1

미디어 파일 uplaod는 컨텐츠를 삽입하려는 경우에만 필요합니다. 메타 데이터 (폴더는 메타 데이터 임) 만 삽입하기를 원하기 때문에 필요하지 않습니다. 포더를 나타내는 JSON이있는 일반 POST이면 충분합니다.

할 수 있습니다 여러 가지 방법으로 부모 ID를 얻을 :

검색
  • (file.list 엔드 포인트)
  • 삽입 폴더 :이 자사의 ID를 포함, 당신에게 삽입 된 폴더를 나타내는 JSON을 반환
  • 웹 UI (ID는 폴더 또는 파일의 URL에 포함되어 있음)를 통해 직접 가져 오기 : 웹 UI로 이동하여 원하는 폴더 또는 파일을 선택한 다음 URL에서 fileId를 식별 할 수 있습니다. 예 : https://drive.google.com/#folders/0B8VrsrGIcVbrRDVxMXFWVkdfejQ
    파일 ID는 URL의 마지막 부분입니다.

0B8VrsrGIcVbrRDVxMXFWVkdfejQ 프로그래밍 방식 FileID에 활용하는 방법 :

  1. 사용 children.list 엔드 포인트를이 알려진 ID의 자녀들의 ID를 얻기 위해 알려진 FileID에를 사용하여.
  2. Google 드라이브의 검색 기능을 사용합니다. q 매개 변수가있는 파일 목록 엔드 포인트
  3. 별칭 사용 : Google 드라이브에서 내가 아는 유일한 것은 드라이브의 루트 폴더에 대해 root입니다.

3. 및 1.을 사용하면 드라이브의 모든 fileIds를 가져올 수 있습니다.

은 내가

+0

오 제롬 thannks하지만 지금 난 여전히 프로그래밍 구글 드라이브에 딱 초보자 사자 아 오해 나는 모두를 검색하는 방법 --- 더 질문을 할 수 여기에서 예제 코드와 같은 FileId 및 ParentId를 https://developers.google.com/drive/v2/reference/files/get 어디서 fileId가 해당 코드를 사용할 수 있습니까? – Toni

+0

테스트 목적으로, 예를 들어. 제공 한 링크의 양식을 사용하여 웹 UI로 이동하여 원하는 폴더 또는 파일을 선택한 다음 URL에서 fileId를 식별 할 수 있습니다. 예 :'https : // drive.google.com/# folders/0B8VrsrGIcVbrRDVxMXFWVkdfejQ' – Jerome

+0

그리고 어떻게 URL에서 가져올 수 있습니까? 그것은 그것의 명령이나 내가 그 fileid를 나눌 수있는 URL을 얻는 방법이 있습니까? – Toni

17

가 드라이브에 폴더를 만들려면 명확하게하는 방법을 잘 모릅니다, 시도 : 당신은 여기에 부모 ID가 필요

def createRemoteFolder(self, folderName, parentID = None): 
     # Create a folder on Drive, returns the newely created folders ID 
     body = { 
      'title': folderName, 
      'mimeType': "application/vnd.google-apps.folder" 
     } 
     if parentID: 
      body['parents'] = [{'id': parentID}] 
     root_folder = drive_service.files().insert(body = body).execute() 
     return root_folder['id'] 

을 다른 폴더 안에 폴더를 만들 경우는 true, 그렇지 않은 경우는 단지 그 어떤 가치도 지키지 마십시오.

부모 ID를 원하면 해당 위치에 해당 상위 이름이있는 폴더를 찾기 위해 Drive를 검색 (list() 호출) 한 다음 해당 폴더의 ID를 가져 오는 메소드를 작성해야합니다.


편집 : API의 v3으로 대신 사전으로는 '부모'필드의 목록을 사용하는 참고. 또한 '제목'입력란이 '이름'으로 변경되었습니다.위의 코드는 V3는 다음을 변경합니다 :

def createRemoteFolder(self, folderName, parentID = None): 
     # Create a folder on Drive, returns the newely created folders ID 
     body = { 
      'name': folderName, 
      'mimeType': "application/vnd.google-apps.folder" 
     } 
     if parentID: 
      body['parents'] = [parentID] 
     root_folder = drive_service.files().insert(body = body).execute() 
     return root_folder['id'] 
+0

정확히 내가 필요로하는 것. 감사! – goelakash

+0

좋은 답변입니다! 하지만 그것은 v3에서'root_folder = drive_service.files(). create (body = body) .execute()'입니다. – LLL

관련 문제