Google Drive SDKのクイックスタートをやってみる for Python
概要
Googleが運営しているサービスの中に、Google Driveというものがあります。これはオンライン上に自分のドキュメントを保存しておくことができるサービスです。同じようなサービスにDropboxやMicrosoft SkyDriveがあります。今回はGoogle Drive SDKを利用してクイックスタートを試してみます。次のような流れで進めていきます。- Googleのアカウントを取得する
- Google API Console のページでアプリケーションを登録する
- Drive SDKをインストールする
- アプリケーションの許可コードを取得するコードを書く
- アプリケーションの許可コードを取得する
- ファイルをアップロードするコードを書く
クイックスタートをやってみよう
1.Googleのアカウントを取得する
APIの利用にはGoogleのアカウントが必要です。アカウントを取得した時点で、Google Driveにも領域が確保されていますから、一度どんなものか見ておくのもいいと思います。2.Google API Console のページでアプリケーションを登録する
アプリケーションの作成にはAPIコンソールのページで申請を出さなければなりません。APIコンソールのServicesのタブをクリックして、Drive APIとDrive SDKのStatusをONに変更します。その後、API AccessのページでクライアントIDを発行してもらいます。
Client ID、Client secret、Redirect URIsの各項目をプログラムで利用します。アプリケーションの登録はここまでで終了です。次は実際にアプリケーションを作成していきます。また、APIコンソールのページでは、どのくらい利用したかをグラフで見ることもできます。Webサービスで利用する際には頻繁に確認することになるのではないでしょうか。
3.Drive SDKをインストールする
どのタイミングでも構わないのですが、SDKをインストールしておきます。私はeasy_installを利用しましたが、特に問題なくインストールをすることができました。SDKのページではpipを利用した方法も合わせて掲載されています。4.アプリケーションの認証コードを取得するコードを書く
SDKのインストールが済んだところで、早速コーディングに取り掛かるのですが、作成したアプリケーションがGoogle Driveにアクセスすることを許可する必要があります。この許可がない場合はSDKは「invalid_grant」を返してきます。また、この認証コードはワンタイムのようで、一度アップロードを行うとその許可コードは無効になってしまうようです。クイックスタートのコードはファイルのアップロードまで一続きですが、まずはその部分だけ切り出してみます。
from oauth2client.client import OAuth2WebServerFlow CLIENT_ID = Your client Id. CLIENT_SECRET = Your client secret code. OAUTH_SCOPE = "https://www.googleapis.com/auth/drive" REDIRECT_URI = Your Redirect Uri flow = OAuth2WebServerFlow(CLIENT_ID, CLIENT_SECRET, OAUTH_SCOPE, REDIRECT_URI) authorize_url = flow.step1_get_authorize_url() print "Go to the following link in your browser: " + authorize_url
上記のコードのCLIENT_ID、CLIENT_SECRET、REDIRECT_URIにはAPI Consoleのページで発行してもらった情報を入れておきます。このコードを実行すると、「Go to the following link in your browser:」に続いてURLが出力されると思います。
5.アプリケーションの認証コードを取得する
前項で得たURLにアクセスすると、次のような画面が表示されるので、アクセス許可を選択します(イメージではDrive Quick startとありますが、これはAPI Consoleで指定したProduct Nameが表示されます)すると、認証コードが表示されるので、これをコピーしておきます。
また、許可した後にGoogle Driveのページを開いて設定を見てみると、許可されたアプリケーションを見ることができます(右上のギアのアイコンから「アプリケーションを管理」を選択)。
6.ファイルをアップロードするコードを書く
やっとファイルをアップロードするコードにたどり着きました。許可コードをソースコードに貼り付けて、実行してみましょう。このソースコードもクイックスタートに掲載されているものの一部を抜き出しています。アップロードするファイルをスクリプトと同じフォルダに用意しておいてください。import httplib2 import pprint from apiclient.discovery import build from apiclient.http import MediaFileUpload from oauth2client.client import OAuth2WebServerFlow CLIENT_ID = Your client Id. CLIENT_SECRET = Your client secret code. OAUTH_SCOPE = "https://www.googleapis.com/auth/drive" REDIRECT_URI = Your Redirect Uri FILENAME = "test document.txt" flow = OAuth2WebServerFlow(CLIENT_ID, CLIENT_SECRET, OAUTH_SCOPE, REDIRECT_URI) code = Your Google Drive authorization code. credentials = flow.step2_exchange(code) http = httplib2.Http() http = credentials.authorize(http) drive_service = build("drive", "v2", http = http) media_body = MediaFileUpload(FILENAME, mimetype = "text/plain", resumable = True) body = { "title": "My Document", "description": "A test document", "mimeType": "text/plain" } file = drive_service.files().insert(body = body, media_body = media_body).execute() pprint.pprint(file)
クイックスタートではテキストファイルのアップロードを行っています。ソースコード中でbodyの設定を行っている場所がありますが、titleでドキュメントの表示名を指定することができます。
興味深く拝読させていただきました。
返信削除すみません、この部分で必ずエラーが出ます。
from apiclient.discovery import build
from apiclient.http import MediaFileUpload
モジュールがないよ的なエラーです。
gdataのライブラリは持ってきたのですが、そこには
無いモジュールなんですね・・。
どこに行けばダウンロード出来るのでしょうか?
返信が遅くなりまして申し訳ありません。
削除このページでご紹介しているのは、GDataではなくて、Google Drive SDKというものを使っています。私は以下のようにコマンド入力してインストールを行いました。
pip install --upgrade google-api-python-client
ちなみに、クイックスタートの元ページは
https://developers.google.com/drive/quickstart-python
になります。