事前準備
認証情報の作成
PythonからGoogleDroveに連携するため、下記のURLから認証情報を作成する。
認証情報の作成は、サイドメニューバー >[APIとサービス] > [認証情報] から作成する。
[+ 認証情報を作成] > [OAuth クライアント ID]を選択する。
[アプリケーションの種類]に「デスクトップアプリ」を選択する。
[名前]は任意の名称を入力し、[作成]ボタンを押下する。
作成が完了すると下記の画面が表示される。[JSONをダウンロード]を押下し、JSONファイルをダウンロードする。「client_secrets.json]の名称で保存する。
OAuthの同意確認
[OAuth同意確認] > [Verification Status]が[PREPAGE FOR VERIFICATION]となっていることを確認する。
settings.yamlの作成
認証情報に関する情報をsettings.yamlに記載する。
client_config_file: client_secrets.json
save_credentials: True
save_credentials_backend: file
save_credentials_file: saved_credentials.json
get_refresh_token: True
実装
ライブラリのインストール
PyDrive2のインストールを行い、下記のスクリプトを作成。
import os
from pydrive2.auth import GoogleAuth
from pydrive2.drive import GoogleDrive
class GoogleDriveFacade:
def __init__(self, setting_path: str = 'settings.yaml'):
gauth = GoogleAuth(setting_path)
gauth.LocalWebserverAuth()
self.drive = GoogleDrive(gauth)
def create_folder(self, folder_name):
'''
GoogleDriveのフォルダ確認を行い、フォルダを作成する。
:param folder_name: フォルダ名
:return: フォルダ
'''
ret = self.check_files(folder_name)
if ret:
folder = ret
print(f"{folder['title']}: exists")
else:
folder = self.drive.CreateFile(
{
'title': folder_name,
'mimeType': 'application/vnd.google-apps.folder'
}
)
folder.Upload()
return folder
def check_files(self, folder_name):
query = f'title = "{os.path.basename(folder_name)}"'
list = self.drive.ListFile({'q': query}).GetList()
if len(list) > 0:
return list[0]
return False
def upload(self, local_file_path: str,
save_folder_name: str = 'sample',
is_convert: bool = True):
if save_folder_name:
folder = self.create_folder(save_folder_name)
file = self.drive.CreateFile(
{
'title': os.path.basename(local_file_path),
'parents': [
{'id': folder["id"]}
]
}
)
file.SetContentFile(local_file_path)
file.Upload({'convert': is_convert})
drive_url = f"https://drive.google.com/uc?id={str(file['id'])}"
return drive_url
if __name__ == "__main__":
g = GoogleDriveFacade()
g.upload(
local_file_path='test.xlsx',
save_folder_name="2024_プロジェクト",
is_convert=True,
)
動作確認
テスト用にtest.xlsx
を作成し、マイドライブの2024_プロジェクト
フォルダにアップロードする。
初回実行時は下記のようなOAuth認証画面が表示されるので、画面に従って本人確認を行う。
GoogleDriveにアクセスし、マイドライブに、[2024_プロジェクト]フォルダの直下に[test.xlsx]が作成されていることを確認。