こんにちは。えんさくです。今回はPythonでSharepoint上のファイルをダウンロードする方法について書いて行きます。色々なサイトで方法が紹介されていますが、どうもうまくいかず、かなりハマった結果かなり簡単なコードになったので備忘録として書いて行きます。
Office365モジュールのインストール
pipにてインストールできるので下記コマンドにてインストールしておきます。
pip install office365
Python コーディング
それでは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
まずはフォルダにアクセスする前に対象のサイトへアクセスしていきます。
site_url = "シェアポイントのURL"
site_folder = "対象ファイルを保管しているフォルダ"
#対象サイトへのアクセス
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()
※ID,PASSWORDにはご自身のID,PASSWORDを設定してください。
上記でシェアポイントへのアクセスが完了したのでファイルをダウンロードしていきます。
ここではHTTPリクエストを作成してシェアポイントサイトにHTTPリクエストを送信しています。
シェアポイントのファイル操作APIに関してはMicrosoftの公式サイトを参考にしました。
filename = "対象のファイル名"
mainreq = format(site_url) + "/_api/web/GetFolderByServerRelativeUrl('"+site_folder + "')/Files('" + filename + '"/$value"
request = RequestOptions(mainreq)
response = ctx.execute_request_direct(request)
上記コードによってファイルの情報を変数:responseに格納します。
あとはローカルファイルにresponseの内容をそのまま貼り付けて保存すればダウンロード完了です。
with open("ローカルファイルパス") as local_file:
local_file.write(response.content)
以上でダウンロード完了です。
終わりに
書いてみると非常に簡単ですがどこのサイトにも正しい情報が載っていなかったのでここに残しておきます。忘れない様にしよう・・・・
コメント