pythonで1つのフォルダの中にあるGoogle Docsをまとめて.txtファイルで落とす方法


やること

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.jsonclient_secret.json
に変更します

理由: PyDriveパッケージがclient_secret.jsonという名前でアクセスキーのファイルを探すから

PyDriveパッケージを入れる

pippip3で入れてください

# pipの人
pip install PyDrive

# pip3の人
pip3 install PyDrive

(参考)

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と同じディレクトリに入れてください

download.py
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アカウントで認証してください
ダウンロードしたファイルは、プログラムと同じディレクトリに入ります

おわり