こんにちは。えんさくです。
今回はPythonからSharepointにファイルをアップロードする方法を記載していきます。
ダウンロード同様ネットに正しい情報が落ちていないので備忘録として記載することにします。
Office365のインポート
pipを試用してOffice365をインポートします。
pip install Office365
Pythonコーディング
まずは必要なモジュールをインポートしていきます。
from office365.runtime.auth.user_credential import UserCredential
from office365.runtime.http.http_method import HttpMethod
from office365.runtime.http.request_options import RequestOptions
from office365.sharepoint.client_context import ClientContext
from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.files.file import File
import os #絶対パスからファイル名を取得する際に使用します。
対象サイトへアクセスし、対象サイトのコンテクスト情報を保存します。
site_url = "シェアポイントのURL"
#対象サイトへのアクセス
ctx_auth = AuthenticationContext(site_url)
ctx_auth.acquire_token_for_user(ID,PASSWORD)
ctx = ClientContext(site_url, ctx_auth)
#コンテクスト情報の保存
web = ctx.web
ctx.load(web)
ctx.execute_query()
対象サイトへのアクセスが可能になったので、ファイルアップロード処理を書いていきます。
まずは、アップロードしたいローカルファイルを開き、ファイルの中身をfile_contentに保管しておきます。
localfilepath = "アップロードしたいファイルの絶対パス"
filename = os.path.basename(path)
with open(localfilepath, 'rb') as content_file:
file_content = content_file.read()
続いて、アップロード先のフォルダ情報を取得します
target_folder = ctx.web.get_folder_by_server_relative_url(uploadfolder)
最後に、フォルダアップロード処理を記載して、アップロード完了です。
target_file = target_folder.upload_file(name, file_content).execute_query()
最後に
上記の様に非常に簡単なコードですが、正しい情報が書いてあるサイトが少ない(もしくは古い)ので備忘録としてまとめてみました。
コメント
Thanks.