今回は案件で(Python)でGoogle Driveへファイルアップロード処理を自動化する必要がありそれについて調査した結果をメモしておきます。
前準備
まずはライブラリのインストール、インストール済みの方もモジュールのインポートエラーなどが発生する場合は–upgradeで最新バージョンに合わせてください。
$pip install --upgrade google-auth-oauthlib $pip install --upgrade google-api-python-client
ライブラリをインストールしたら、以下の記事で解説している通りにプロジェクトの作成・GoogleドライブAPIの有効化・JSON秘密鍵の作成を行う必要があります。
参照:【Python】Googleスプレッドシートの読み込み・書き出し・追記処理をgspreadで自動化する
PythonでGoogleドライブへのファイルアップロード処理を自動化する
注意点としてはアップロード先に指定するフォルダはフォルダの個別ページから右上にある「共有」をクリックしてスプレッドシートの時と同じようにjsonの秘密鍵に記載されているメールアドレスを追加して権限を追加する必要があります。これがないと403 forbidden が返されるので注意してください。
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload
#ダウンロードしたjsonファイル名をクレデンシャル変数に設定(秘密鍵、Pythonファイルから読み込みしやすい位置に置く)
credentials = ServiceAccountCredentials.from_json_keyfile_name(r'C:\~~~~.json', scope)
service = build("drive", "v3", credentials=credentials, cache_discovery=True)
def uploadFileToGoogleDrive(service, fileName, local_path, mimetype):
'''
filename: アップロード先でのファイル名
local_path: アップロードするファイルのローカルのパス
mimetype: http通信の規格(csv→text/csv 参照:https://qiita.com/AkihiroTakamura/items/b93fbe511465f52bffaa)
'''
# "parents": ["****"]この部分はGoogle Driveに作成したフォルダのURLの後ろ側の文字列に置き換えてください。
file_metadata = {"name": fileName, "mimeType": mimetype, "parents": ["****"]}
media = MediaFileUpload(local_path, mimetype=mimetype, chunksize=1024*1024,resumable=True )
#media = MediaFileUpload(local_path, mimetype=mimetype,resumable=True ) #csvなどの場合はこちらでも可(チャンクサイズは不要)
file = service.files().create(body=file_metadata, media_body=media, fields='id').execute()
print(f'{fileName}のアップロード完了!')
# 関数使用例
uploadFileToGoogleDrive(service, 'drivename.mp4', 'localname.mp4', 'video/mp4')
参考:https://qiita.com/munaita_/items/d03b67b74868c3e4fb2d
参考:https://zenn.dev/wtkn25/articles/python-googledriveapi-operation

コメント