PythonでGoogle ColaboratoryとGoogle Driveのファイルのやりとりする（１）

Google Colaboratoryはとても便利ですが、ファイルのやりとりが若干めんどくさいのが難点。Google Drive公式のpython APIを利用して、ファイルのアップロード、ダウンロードを便利にしましょう。

2018/9/19更新{
ColaboratoryでのGoogle Driveへのマウントが簡単になっていたお話
https://qiita.com/k_uekado/items/45b76f9a6f920bf0f786

めっちゃ便利になって、一瞬でマウント出来るようになったらしい。
例えばcolaboratoryのフォルダにcolab_tmpというフォルダを作成のうえ、
下記の通りマウント、認証、カレントディレクトリの変更を行うことで、
google driveとcolabolatoryの間でファイルをやり取りできる。
個人的にgoogle driveのファイルの管理のためのapi作ろうかと思っていたが、
マウント後にlinuxのコマンドを使うだけで片付く模様。

```
from google.colab import drive
drive.mount('/content/drive')
```

```
import os
os.chdir("/content/drive/My Drive/Colab Notebooks/colab_temp")
```

}

大まかな流れとしては、APIを作成し認証用のjsonファイルを作成し、そのファイルやライブラリをインストールしたうえで、クエリを使用してファイルやフォルダのGoogle Drive上でのidを取得し、ファイルのダウンロードやアップロードを行うという流れになります。
記事が長くなるため、３記事に分けて投稿します。

0.Google Colaboratoryを使う
1.CLI APIを作成する
2.必要なライブラリのインストール
3.serviceの作成
4.queryの実行によるidの取得
5.Goole Driveからのファイルのダウンロード、アップロード
6.Githubを利用した方法

### 0.Google Colaboratoryを使う
Chromeで"Google Colaboratory"と検索して
Hello, Colaboratory - Colaboratory - Google
を開くと下記のような画面が出てくるので、「ノートブックを新規作成」、
「PYTHON3 の新しいノートブック」を選ぶ。

<img width="765" alt="colaboratory.png" src="https://qiita-image-store.s3.amazonaws.com/0/199023/2bee1482-c523-a652-2171-6d4c09808814.png">

ノートブックの名前が「Untitled0.ipynb」など適当な名前になっているので、
タイトルを「gdrive.ipynb」などにする。
Google Driveを確認すると
「Colab Notebooks」というフォルダが作成され、その中に「gdrive.ipynb」
が作成されています。
次回からはGoogle Drive上で「gdrive.ipynb」を右クリックして、「アプリで開く」、
「Collaboratory」と選ぶだけでJupyter Notebookが使えます。（ちなみにAndroid端末やipadでも最初に書いたGoogle検索経由でアクセスすればColaboratoryが使えます。）

<img width="582" alt="gdrive.png" src="https://qiita-image-store.s3.amazonaws.com/0/199023/8e4bf7ef-b117-c60d-5f3d-deba35a551b3.png">

### 1.CLI APIを作成する（STEP 1 Turn on the Drive API）
google Google Drive REST API Overview
https://developers.google.com/drive/v3/web/about-sdk

quick start for python
https://developers.google.com/drive/v3/web/quickstart/python

quick start for pythonのリンク先を開くと、
Step 1: Turn on the Drive API 
Use this wizard to create or select a project in the Google Developers Console and automatically turn on the API. Click Continue, then Go to credentials.
と書いてあるので、"this wizard"の部分のリンク
「同意をはいにする」「同意して続行」
<img width="354" alt="select_project.png" src="https://qiita-image-store.s3.amazonaws.com/0/199023/302807af-20f6-95ae-fd03-c37b61306211.png">

「認証情報に進む」①
<img width="352" alt="ninsyo.png" src="https://qiita-image-store.s3.amazonaws.com/0/199023/77b527d5-77bd-5bcb-d83f-fa882e708cc7.png">

「Google Drive API」「その他のUI」「ユーザーデータ」②
<img width="469" alt="ninsyo2.png" src="https://qiita-image-store.s3.amazonaws.com/0/199023/2de96a16-4037-c1be-0667-ebccb836f270.png">

「名前をつける」「クライアントIDの作成」③
<img width="333" alt="ninsyo3.png" src="https://qiita-image-store.s3.amazonaws.com/0/199023/a02f2f78-6e9e-0d6e-6d66-55a10b5ba59f.png">


「アドレス選択」「名前を入力」「次へ」④
<img width="261" alt="ninsyo4.png" src="https://qiita-image-store.s3.amazonaws.com/0/199023/73e06d1f-f056-1783-313f-6ac143c9f121.png">

「完了」（ダウンロードはしない。）⑤
<img width="431" alt="ninsyo5.png" src="https://qiita-image-store.s3.amazonaws.com/0/199023/1435042e-86f0-9e55-4e83-6340e8dbad17.png">

ごみ箱の右に、ダウンロードっぽいボタンがあるのでクリック。⑥
名前を、”client_secret.json”に直しておく。
<img width="404" alt="ninsyo6.png" src="https://qiita-image-store.s3.amazonaws.com/0/199023/2594446e-1f45-b0a3-e2a4-056b3653b0ba.png">