2/3 Google Driveを操作するための準備 ほか(pydrive ,Google Drive API)
■今日やったこと
- Google Drive APIをJupyter Notebookで使えるようにする
- Google Colaboratoryで今まで作ったコードを実行してみる(今更)
- ターミナルからPythonを実行する方法を知る(超今更)
Google Driveを操作するまでには至らなかった。
調べてもわからないことだらけで手探りで進めたため、すごい時間がかかった…。
調べてもわからないことだらけで手探りで進めたため、すごい時間がかかった…。
■環境
- mac 10.13.6
- Python 3.8.5
- conda 4.9.2
- PyDrive 1.3.1 (今回インストールした)
- google-api-python-client(認証後にDLで大丈夫だった)
■Google Drive APIをJupyter Notebookで使えるようにする
PythonでGドライブを操作するにはまず、Google Drive APIというのを使えるようにしなければならない。
さらにGoogleはセキュリティが厳しいので、
使用の許可をJupyter Notebookに与えるための手続きが色々と大変だった(OAuthオーオース認証)。
一度許可を出して使えるようになれば(認証されれば)同じ手続きをしなくても使えるらしいけど、
一応使えるようになるでの流れをメモ。
0. pydriveのインストール
pydriveをターミナルからインストール
conda install -c conda-forge pydrive
1.Google Developer Consoleでプロジェクトを新規作成
Google Developer Consoleに初めてアクセスした。
初めてなので「プロジェクトの新規作成」からスタート。
2.認証情報を作成
認証情報を作成>OAuth クライアント ID
アプリケーションの種類は「デスクトップ アプリ」を選択し、作成
ここで作成されたクライアント IDとクライアント シークレットは後で使うのでメモる。
(あとで他の画面から確認することもできる)
つまづいたところ:アプリケーションの種類
区別がよくわからないのだが「ウェブ アプリケーション」だと最終的にうまくいかなかった…なぜ?
つまづいたところ:公開ステータス
公開ステータスが「テスト」になっていたので、後の認証画面でエラーが出てしまった。
当たり前だけど「本番環境」にしないと使えない。
3.client_secret_クライアントID.json をダウンロード
4.Google Drive APIを有効化
ダッシュボード>APIとサービスの有効化>Google Drive APIを検索>有効にする
5.pydriveを使ったプログラムを作成
初回はドライブへのアクセス認証を求められるので、そのために適当なコード(画像のアップロードをするコードとか、なんでも)を作成。
実行するのはどんな操作でもいいのだが、検索すると、
テキストや画像のアップロードを行うコードが主に出てくる。
今回は認証のみを行うコードを紹介している人を発見したのでそれを使ってみた。
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
gauth = GoogleAuth()
gauth.CommandLineAuth()print("ok")
6. pydriveプログラムと同じ階層にclient_secret_クライアントID.jsonを格納
※よく分かってないが、多分同じ階層にないと実行できないと思われる
7.プログラムをJupyter Notebookで実行、アクセス認証を行う
エラーが出て、
Go to the following link in your browser:
と言われるので、表示されるURLからGドライブへのアクセス許可を行う。
許可後に認証コード(verification code)が発行されるので、Jupyter Notebookに戻って入力する。
※Winのコマンドラインでの実行例がほとんどで、
自分の環境でのやり方が分からず、ここで詰んだ。
Macの場合ターミナルから実行することになるが、Jupyter NotebookでしかPythonを動かしたことがなくて、
.pyファイルをターミナルから実行する方法を知らなかった。
結局ターミナルから実行する方法は分かったものの、
なぜかエラーが出てうまくいかなかったので、Jupiter Notebookで実行してみたところ、なんかできた。
(Jupiter Notebookでやってる人が見当たらなかったので試みていなかった)
コメント
コメントを投稿