2017-10-05 2 views
0

最初のポイントを使用して別の形式でのドライブからファイルをダウンロードしてください ドライブで手作業でやっているように:GoogleドキュメントとしてPDFファイルを開いてダウンロードしてください。Pythonの:私は、ドキュメントやGoogleドライブのAPIを使用して、他の形式としての私のドライブからPDFファイルをダウンロードする可能性があるしてください質問があります:apidrive

EDIT: 第2ポイント:何をしたのですか: クイックスタートでapidriveに接続します。ドライブAPIをオンにし(ステップ1)、Googleクライアントライブラリをインストールしました(ステップ2)。私はちょうど駆動するためにアップロードした「documt.pdf」をダウンロードする

from pydrive.auth import GoogleAuth 
from pydrive.drive import GoogleDrive 

#1st authentification 
gauth = GoogleAuth() 
gauth.LocalWebserverAuth() # Creates local webserver and auto handles 
authentication. 
drive = GoogleDrive(gauth) 

file1 = drive.CreateFile() 
file1.SetContentFile('documt.pdf') 
file1.Upload() 

私の計画の次のステップは、だった: はその後、私は、コードを使用して、私のドライブに私のHDからファイルをアップロードするためにしようと試みました別の形式(たとえば.doc)で入力します。だから私はどのように検索したので、私はちょうど(ドキュメントが言うように)何をしていない場合でも、私は欲しいものの逆にPDFドキュメントとしてGoogleドキュメントをダウンロードすることができますので、 :

file_id = '1ZdR3L3qP4Bkq8noWLJHSr_iBau0DNT4Kli4SxNc2YEo' 
request = drive_service.files().export_media(fileId=file_id, 
             mimeType='application/pdf') 
fh = io.BytesIO() 
downloader = MediaIoBaseDownload(fh, request) 
done = False 
while done is False: 
status, done = downloader.next_chunk() 
print "Download %d%%." % int(status.progress() * 100) 

しかしでも、このコードは、エラーを示しています

Traceback (most recent call last): 
File "C:\Users\OU\AppData\Local\Programs\Python\Python36- 
32\download_from_drive.py", line 10, in <module> 
request = drive_service.files().export_media(fileId=file_id, 
NameError: name 'drive_service' is not defined 

私client_secretsファイルには、(それが問題に関係を持っているかどうかを知りません)のようになります。 {「ウェブ」: { "CLIENT_ID": "xxxxx.apps.googleusercontent.com"、 "PROJECT_ID": "XXXX"、 "auth_uri": "https://accounts.google.com/o/oauth2/auth"、 "token_uri": "https://accounts.google.com/x/oauth2/token"、 "auth_provider_x509_cert_url":」https://www.googleapis.com/oauth2/v1/c " "client_secret": "ERM-XXXX"、 "redirect_uris":[" http://localhost:8080/ "]、" javascript_origins ":[" http://localhost:8080「]}}

誰も私は私の質問に対する答えを見つけることができます(最初のポイント)、そしてエラー(2番目のポイント)を解く?

大変ありがとうございます

答えて

0

Finnally、私は私の質問に答えました。最初の点は です。別の形式としてpdfをダウンロードすることはできません。ただし、PDFの場合でもGoogleの書式application/vnd.google-apps.documentでアップロードすることができます。私は本当にうまく動作します。

2番目の点について:1点目の問題が解決したので、私はエラーを修正する必要はありません。私が望んでいたものが完璧にうまくいったから

0

あなたのスクリプトはうまく動作すると思います。しかし、NameError: name 'drive_service' is not definedのエラーから、Quickstart for Drive APIを使用する可能性があると私は考えました。あなたの質問のスニペットは、クイックスタートの一部として使用できます。クイックスタートのエラーservice = discovery.build('drive', 'v3', http=http)です。あなたの場合、drive_serviceという変数は、Quickstartのserviceです。したがって、スニペットを使用するためのフローは次のとおりです。

  1. Quickstartのステップ1とステップ2を実行します。
  2. 手順3では、service = discovery.build('drive', 'v3', http=http)からdrive_service = discovery.build('drive', 'v3', http=http)に変更してください。
  3. drive_service = discovery.build('drive', 'v3', http=http)以下のスクリプトをmain()に置き換えてください。これを行うときは、スクリプトのインデントに注意してください。
+0

ご回答いただきありがとうございます。私はあなたが私に言ったことをやろうとしていた。しかし、私は既にいくつかのファイルをアップロードするためにstep1と2をしたことをあなたに知らせる必要があります。しかし、今私は他の形式(doc、txt ...)で私のドライブからダウンロードしたいです。それが私の質問に投稿したスクリプトを見つけた理由です。しかし、私はあなたが私に言ったことをしたが、第3のポイントのコードは、ドライブに接続し、ファイルを一覧表示するだけです。ですから、どうすればapidriveを使ってドライブからファイルをダウンロードできますか? – Elroum

+0

@Elroumご返信ありがとうございます。私の環境では、あなたのスクリプトは正常に動作します。あなたの現在のスクリプト全体を見せてもらえますか?あなたがそれを行うことができれば、あなたの質問にそれを加えてください。その際、個人情報を削除してください。 – Tanaike

+0

ありがとうございました。私は正確に何をしたのかをお見せします。私は私の質問を編集します – Elroum

関連する問題