やること
Google Driveの中にsome_folder
というフォルダがあって、
フォルダの中に↓みたいにGoogle Docsファイルが入ってるとします
この doc1
, doc2
, ... を全部 .txt
形式で落とすPythonプログラムを作ります
some_folder
└ doc1
└ doc2
└ doc3
└ ...
PyDrive
というGoogle Drive APIのラッパーパッケージを使います
フォルダ内にGoogle Docs以外のファイル(SpreadSheetとかPDF)とかがあった場合のエラー処理はしてません
1. 環境構築
Drive APIのアクセスキーをダウンロード
ここからアクセスキーのjsonを落としてきます
下の画像の青いボタンを押せばok
アクセスキーのファイル名を変える
ファイル名を
credentials.json
→client_secret.json
に変更します
理由: PyDrive
パッケージがclient_secret.json
という名前でアクセスキーのファイルを探すから
PyDrive
パッケージを入れる
pip
かpip3
で入れてください
# pipの人
pip install PyDrive
# pip3の人
pip3 install PyDrive
(参考)
- パッケージのサイト: https://pypi.org/project/PyDrive/
- ドキュメンテーション: https://pythonhosted.org/PyDrive/index.html
2. Google DriveのフォルダIDをとってくる
フォルダIDは、Google Driveフォルダをブラウザで開くと、URLからわかります
https://drive.google.com/drive/folders/xxx
URLは↑のような形式になっていて、xxx
の部分がフォルダのIDです
3. コードを書く
これを貼り付けて、2でとってきたフォルダのIDをコードのFOLDER_ID
のところに入れます
プログラムは1のclient_secret.json
と同じディレクトリに入れてください
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
# OAuthする
gauth = GoogleAuth()
gauth.LocalWebserverAuth()
drive = GoogleDrive(gauth)
# ファイルをダウンロードしてくる
file_list = drive.ListFile(
{'q': "'FOLDER_ID' in parents and trashed=false"}).GetList()
for file in file_list:
title = file['title']
file.GetContentFile(f'{title}.txt', mimetype='text/plain')
print(f'downloading file: {title}')
4. 実行
どっちかでプログラムを実行してください
# pythonコマンドの人
python download.py
# python3コマンドの人
python3 download.py
実行すると、ブラウザのタブが開くのでGoogleアカウントで認証してください
ダウンロードしたファイルは、プログラムと同じディレクトリに入ります
おわり