0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Posted at

やること

Google Driveの中にsome_folderというフォルダがあって、
フォルダの中に↓みたいにGoogle Docsファイルが入ってるとします
この doc1, doc2, ... を全部 .txt形式で落とすPythonプログラムを作ります

some_folder
└ doc1
└ doc2
└ doc3
└ ...

PyDriveというGoogle Drive APIのラッパーパッケージを使います

:warning: フォルダ内にGoogle Docs以外のファイル(SpreadSheetとかPDF)とかがあった場合のエラー処理はしてません

1. 環境構築

Drive APIのアクセスキーをダウンロード

ここからアクセスキーのjsonを落としてきます
下の画像の青いボタンを押せばok

image.png

アクセスキーのファイル名を変える

ファイル名を
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のところに入れます

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

おわり :tada:

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?