Office365-rest-python-client: folder.files出力なし/エラーなし

作成日 2019年03月13日  ·  12コメント  ·  ソース: vgrem/Office365-REST-Python-Client

やあ、

私の目標は、SharePointサイトのドキュメントライブラリ/リストのコンテンツを印刷することです
そして、なぜ出力/エラーがまったく発生しないのかを理解しようとしています。

私のURLhttps ://my.jci.com/sites/FRAReporting/Shared%20Documents/Forms/AllItems.aspx
2つのフォルダと1つのファイルを含むドキュメントを指していますが、このスクリプトを実行しても表示されないようです。
list_objectを「共有ドキュメント」から別のタイトルに変更しても違いはありません。

ここで明らかな何かが欠けていますか? どんな助けでも大歓迎です。

ありがとうございました。

マルセル

office365.runtime.auth.authentication_contextからimportAuthenticationContext
office365.sharepoint.client_contextからimportClientContext

app_settings = {
'url': ' https://my.jci.com/sites/FRAReporting/Shared%20Documents/Forms/AllItems.aspx '、
'client_id': 'f638a093-aa8f-48c7-a4e6-998d7d1ee388'、
'client_secret': 'xysjblahblah'、
}

if __name__ == '__ main __':
context_auth = AuthenticationContext(url = app_settings ['url'])
context_auth.acquire_token_for_app(client_id = app_settings ['client_id']、client_secret = app_settings ['client_secret'])の場合:

    ctx = ClientContext(app_settings['url'], context_auth)

    list_object = ctx.web.lists.get_by_title("Shared Documents")
#list_object = ctx.web.lists.get_by_title("Documents")
#list_object = ctx.web.lists.get_by_title("FRAReporting")

    folder = list_object.root_folder        
    ctx.load(folder)
    ctx.execute_query()

    files = folder.files
    ctx.load(files)
    ctx.execute_query()

    for myfile in files:
        print("File name: {0}".format(myfile.properties["Name"]))

全てのコメント12件

ところで、Office365-REST-Python-Client(2.1.1)とpython3.6.4を使用します

ご挨拶!

残念ながら、提供された例では問題を見つけることができません。すべてが私にとって良さそうです。

以下の説明から:
_2つのフォルダと1つのファイルを含むドキュメントを指します_

ファイルがルートフォルダの下ではなくサブフォルダの下に保存されている可能性がありますか?

とにかく、アイテムが返されるかどうかを確認するためだけに、このアプローチを試してみてください。

list_obj = context.web.lists.get_by_title(list_title)
qry = CamlQuery.create_all_items_query()
items = list_obj.get_items(qry)
context.load(items)
context.execute_query()
for cur_item in items:
    print("File name: {0}".format(cur_item.properties["Title"]))

image

やあ、
コードを実行すると、次のようになります。

PS C:UsersfooAppDataLocalProgramsPythonPython36ScriptsSharePoint> .... python.exe .sharePoint_office365_test4.py
トレースバック(最後の最後の呼び出し):
ファイル ".sharePoint_office365_test4.py"、行36、
ctx.execute_query()
execute_queryのファイル「C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_runtime_context.py」、36行目
self.pending_request.execute_query()
execute_queryのファイル「C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_request.py」、32行目
self.execute_pending_queries()を返します
execute_pending_queriesのファイル「C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_request.py」、38行目
response = self.execute_request_direct(request)
execute_request_directのファイル "C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_request.py"、行109
self.context.ensure_form_digest(request_options)
ファイル「C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365sharepointclient_context.py」、27行目、ensure_form_digest
self.request_form_digest()
ファイル「C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365sharepointclient_context.py」、39行目、request_form_digest
ペイロード= response.json()
ファイル「C:UsersfooAppDataLocalProgramsPythonPython36libsite-packagesrequestsmodels.py」、897行目、json
complexjson.loads(self.text、** kwargs)を返します
ファイル "C:UsersfooAppDataLocalProgramsPythonPython36libjson__init__。py"、行354、ロード中
_default_decoder.decode(s)を返します
ファイル「C:UsersfooAppDataLocalProgramsPythonPython36libjsondecoder.py」、339行目、デコード
obj、end = self.raw_decode(s、idx = _w(s、0).end())
raw_decodeのファイル "C:UsersfooAppDataLocalProgramsPythonPython36libjsondecoder.py"、行362
JSONDecodeError( "Expecting value"、s、err.value)をNoneから発生させます
json.decoder.JSONDecodeError:期待値:行2列1(文字2)
PS C:UsersfooAppDataLocalProgramsPythonPython36ScriptsSharePoint>

raw_decode例外で文字列を出力すると、次のようになります。添付ファイルを参照してください。

どうもありがとうございました。
マルセル

2回目のレビュー中に(そして提供されたスクリーンショットを見て、ありがとう!)、提供されたURLが有効ではないように見えることに気づきました:

app_settings = {
'url': 'https://my.jci.com/sites/FRAReporting/Shared%20Documents/Forms/AllItems.aspx',
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         needs to be site url  

}

提供されたURLは_ライブラリビューページの絶対URL_に対応します、実際にClientContext期待するのはsiteUrlなので、次の代わりに:

https://my.jci.com/sites/FRAReporting/Shared%20Documents/Forms/AllItems.aspx

試してみてください:

https://my.jci.com/sites/FRAReporting/

あなたは絶対に正しいです、それはそれでした。
あなたは私の日を作りました、あなたに十分に感謝することはできません。
NS。

スクリプトを実行すると、15行のように出力されます。

C:UsersfooAppDataLocalProgramsPythonPython36ScriptsSharePoint> .... python.exe.sharePoint_office365_test4。
ファイル名:なし
ファイル名:なし
ファイル名:なし
ファイル名:なし
ファイル名:なし
ファイル名:なし
ファイル名:なし
ファイル名:なし
ファイル名:なし
ファイル名:なし
ファイル名:なし
ファイル名:なし
ファイル名:なし

私の(私はあなたのものを意味します:)元のスクリプトを実行している間、私は期待される結果を得る:
ファイル名:Document.docx
ファイル名:access_denied.txt

私の質問は、たとえば、SSの上からフォルダ「TEST」の下にあるすべてのファイルを一覧表示するにはどうすればよいですか。 それがまさに私が達成しようとしていることです。

私の正確な問題について詳しく説明できるかどうかはわかりません。 ルート(またはそれが呼ばれるもの;ドキュメント)でファイルを正常に印刷しているのと同じように:

ファイル名:Document.docx
ファイル名:access_denied.txt

私もそれができます。 しかし、むしろフォルダ内のファイルのリストを取得したいです。

このページは役に立ちましたか?
0 / 5 - 0 評価