Google Drive SDKのクイックスタートをやってみる for Python

概要

Googleが運営しているサービスの中に、Google Driveというものがあります。これはオンライン上に自分のドキュメントを保存しておくことができるサービスです。同じようなサービスにDropboxMicrosoft SkyDriveがあります。今回はGoogle Drive SDKを利用してクイックスタートを試してみます。次のような流れで進めていきます。

  1. Googleのアカウントを取得する
  2. Google API Console のページでアプリケーションを登録する
  3. Drive SDKをインストールする
  4. アプリケーションの許可コードを取得するコードを書く
  5. アプリケーションの許可コードを取得する
  6. ファイルをアップロードするコードを書く

クイックスタートをやってみよう

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でドキュメントの表示名を指定することができます。

次に

Google Drive SDKにはファイルのアップロードだけではなく、他にも色々な機能が用意されています。リファレンスを読みながらにやにやすることにします。

コメント

  1. 興味深く拝読させていただきました。
    すみません、この部分で必ずエラーが出ます。
    from apiclient.discovery import build
    from apiclient.http import MediaFileUpload
    モジュールがないよ的なエラーです。
    gdataのライブラリは持ってきたのですが、そこには
    無いモジュールなんですね・・。
    どこに行けばダウンロード出来るのでしょうか?

    返信削除
    返信
    1. 返信が遅くなりまして申し訳ありません。

      このページでご紹介しているのは、GDataではなくて、Google Drive SDKというものを使っています。私は以下のようにコマンド入力してインストールを行いました。

      pip install --upgrade google-api-python-client

      ちなみに、クイックスタートの元ページは
      https://developers.google.com/drive/quickstart-python
      になります。

      削除

コメントを投稿

このブログの人気の投稿

【KotlinとJava】分解宣言

wxPythonでのモーダルダイアログ作成