[Python] Googleドライブにファイルをアップロードする
はじめに
以前、Pythonで、Googleドライブ上の指定フォルダ内にあるファイルをダウンロードする処理を実装しました。
今回は、Googleドライブにローカルにあるファイルをアップロードする処理を実装します。
手順は、下記となります。
Google Cloud Platformにて、プロジェクトを作成、秘密鍵を生成する
参照するGoogle Driveのフォルダを共有設定する
ライブラリをインストールする
Pythonスクリプトを実装する
1~3については、前回の記事で記載しておりますので、ご参照ください。
使用するライブラリ
google-api-python-client
google-auth-httplib2
google-auth-oauthlib
動作環境
・windows11
・Jupyter Notebook 6.4.5
・Python 3.9.7
実装
全体の処理は、下記です。
from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
from httplib2 import Http
from googleapiclient.http import MediaFileUpload
SCOPES = ['https://www.googleapis.com/auth/drive']
credentials = ServiceAccountCredentials.from_json_keyfile_name(
'service_account.json', SCOPES
)
http_auth = credentials.authorize(Http())
drive_service = build('drive', 'v3', http=http_auth)
upload_file_path = "./test.csv"
upload_file_name = os.path.basename(upload_f_path)
mine_type = 'text/csv'
folder_id = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
media = MediaFileUpload(upload_file_path, mimetype=mine_type, resumable=True)
file_metadata = {
'name': upload_file_name,
'mimeType': mine_type,
'parents': [folder_id]
}
file = drive_service.files().create(
body=file_metadata,
media_body=media
).execute()
print(file['id'])
順番に処理の内容を説明します。
①OAuthの認証
SCOPES = ['https://www.googleapis.com/auth/drive']
credentials = ServiceAccountCredentials.from_json_keyfile_name(
'service_account.json', SCOPES
)
APIで使用する権限を指定します。今回は、ドライブ上のファイル操作の権限を指定しています。
ServiceAccountCredentials.from_json_keyfile_nameメソッドの第1引数には、ダウンロードしたJSONファイルのファイルパスを指定します。
②GoogleDriveAPIを使用するためのインスタンスを生成
drive_service = build('drive', 'v3', http=http_auth)
③アップロードするファイルオブジェクトを準備
media = MediaFileUpload(upload_file_path, mimetype=mine_type, resumable=True)
file_metadata = {
'name': upload_file_name,
'mimeType': mine_type,
'parents': [folder_id]
}
file = drive_service.files().create(
body=file_metadata,
media_body=media ).execute()
アップロードするファイルを準備するため、MediaFileUploadクラスを生成します。
次に、drive_service.files().createメソッドで、ファイルをアップロードします。ここで、bodyキーワードで指定する引数には、下記の情報を辞書型で設定します。
・ファイル名(name)
・ファイル種別(mimeType)
・配置するフォルダID(parents)
ここで、配置するフォルダを指定する、parentsキーの値は、配列で指定する必要があります。
処理は以上です!
まとめ
今回は、Pythonスクリプトから、Googleドライブにローカルにあるファイルをアップロードする処理についてお伝えしました。
参考サイト
この記事が気に入ったらサポートをしてみませんか?