2

Google ドライブ アカウントからファイルを取得して更新するための簡単なスクリプトをセットアップしました。認証とドライブへのアクセスに問題はありません。ファイルは、ドライブ上の Google スプレッドシートの形式になっています。したがって、pydrive ファイル オブジェクトがある場合、ファイルの URL を .csv 形式で取得しますgoogle_file['exportLinks']['text/csv']。これは過去に機能していましたが、今日は新しいファイルに対して同じ方法を試しましたが、データの csv 形式を取得する代わりに、HTML を取得し続けます。さらに、リンクをコピーgoogle_file['exportLink']['text/csv']してブラウザに貼り付けると、ブラウザは要求に応じて csv 形式でファイルのダウンロードを開始します。特にこれは過去に機能していたので、何が起こっているのか本当にわかりません。

基本的に私のコードは次のとおりです。

drive = GoogleDrive(gauth)

drivefiles  = drive.ListFile().GetList()
form_file = None

for f in drivefiles:
    if f['title'] == formFileName:
        form_file = f
        break

output = requests.get(form_file['exportLinks']['text/csv'])
print output.text #this ends up being HTML, not text/csv

他の誰かが以前にこの問題を見たことがありますか? ドライブ上の Google スプレッドシート ファイルを削除して再度追加する必要がありますか?

編集:更新

そのため、Googleドライブのファイルのアクセス許可を、ファイルを共有した人だけがアクセスできるものから、すべての人がアクセス/編集できるように変更した後、ファイルにアクセスしてダウンロードすることができました. client_secret.json ファイルは、特定の Google ドライブ ユーザーが安全に認証できるようにするものですか、それとも、その特定のセッションで誰でも Google API にアクセスできるようにする一般的なキーですか? ファイルが限られた一連の電子メール アドレスとのみ共有されている場合、http 要求で送信する必要がある特別なデータはありますか?

4

2 に答える 2

0

また、Google ドライブ API の特異性を処理するのが少し難しいこともわかりました。Google ドライブ API のラッパーを作成したので、比較的簡単に処理できます。それが役立つかどうかを確認してください:-

Google ドライブ クライアント

サンプルコード:-

file_id = 'abc'
file_access_token = '34244324324'

scope = 'https://www.googleapis.com/auth/drive.readonly'
path_to_private_key_file = '#'
service_account_name = '284765467291-0qnqb1do03dlaj0crl88srh4pbhocj35@developer.gserviceaccount.com'

drive_client = GoogleDriveClient(
               scope = scope,
               private_key = open(path_to_private_key_file).read(),
               service_account_name = service_account_name)

file = drive_client.get_drive_file(file_id, file_access_token)

もちろん、プロファイルに応じてアクセス変数を変更する必要があります。

于 2015-08-28T06:58:15.427 に答える