httpリクエストで取得したファイルをsharepointにアップロードする方法。
フロー
1. 今日の日付のフォルダをsharepoint上に作成
2.file_list内のファイルを順に httpリクエストで取得してアップロード
コード例
import requests
from office365.sharepoint.client_context import ClientContext
from office365.runtime.auth.user_credential import UserCredential
from io import BytesIO
import datetime
# ダウンロードしたいファイルのリスト
file_list = [
"53/iris.zip",
"45/heart+disease.zip",
]
# ダウンロード元のURL
base_url = "https://archive.ics.uci.edu/static/public/"
# 現在の日付を取得してファイル名に追加(YYYY.MM.DD形式)
save_date = datetime.datetime.today().date().strftime('%Y.%m.%d')
# SharePointの認証情報
user = 'ユーザー名'
password = 'パスワード'
site_url = "https://サイトURL"
ctx = ClientContext(site_url).with_credentials(UserCredential(user, password))
# SharePointのフォルダへの相対パス
fldrs_path = '/sites/***/Shared Documents/***(チャネル名)/***(フォルダ名)'
# フォルダの作成
target_folder = ctx.web.folders.add(fldrs_path + "/" + save_date)
ctx.execute_query()
folder = ctx.web.get_folder_by_server_relative_url(fldrs_path + "/" + save_date)
# ファイルを順にダウンロードしてアップロード
for file_name in file_list:
# 完全なURLを作成
file_url = base_url + file_name
try:
# HTTPリクエストでファイルをダウンロード
response = requests.get(file_url, headers=headers, allow_redirects=True)
# ステータスコードが200か確認
if response.status_code == 200:
# ファイルコンテンツをメモリ上に保持
file_content = BytesIO(response.content)
# SharePoint フォルダにファイルをアップロード
file = folder.files.upload(file_content, file_name).execute_query()
print(f"{file_name} をダウンロードし、SharePoint にアップロードしました。")
else:
print(f"ファイル {file_name} のダウンロードに失敗しました。ステータスコード: {response.status_code}")
except requests.exceptions.RequestException as e:
print(f"エラーが発生しました: {e}")