Office365-rest-python-client: لا يوجد إخراج folder.files / لا يوجد خطأ

تم إنشاؤها على ١٣ مارس ٢٠١٩  ·  12تعليقات  ·  مصدر: vgrem/Office365-REST-Python-Client

أهلا،

هدفي هو طباعة محتويات مكتبة / قائمة مستندات موقع SharePoint
وأنا أحاول معرفة سبب عدم تلقي أي أخطاء على الإطلاق.

عنوان url الخاص بي https://my.jci.com/sites/FRAReporting/Shared٪20Documents/Forms/AllItems.aspx
يشير إلى المستندات التي تحتوي على مجلدين وملف واحد ولكن لا يمكنني رؤيتها عن طريق تشغيل هذا البرنامج النصي.
تغيير list_object من "Shared Documents" إلى عناوين بديلة لا يحدث فرقًا.

هل أفتقد شيئًا واضحًا هنا ، من فضلك؟ أي مساعدة سيكون محل تقدير كبير.

شكرا لك.

مارسيل

من office365.runtime.auth.authentication_context استيراد AuthenticationContext
من office365.sharepoint.client_context استيراد ClientContext

app_settings = {
'url': ' https://my.jci.com/sites/FRAReporting/Shared٪20Documents/Forms/AllItems.aspx ' ،
"معرف العميل": "f638a093-aa8f-48c7-a4e6-998d7d1ee388" ،
"client_secret": "xysjblahblah" ،
}

إذا __name__ == '__main__':
Context_auth = AuthenticationContext (url = app_settings ['url'])
if 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) و python 3.6.4

تحيات!

لسوء الحظ ، لا يمكنني تحديد أي مشكلات في المثال المقدم ، كل شيء يبدو جيدًا بالنسبة لي.

من الوصف أدناه:
_ يشير إلى المستندات التي تحتوي على مجلدين وملف واحد_

هل يمكن أن تكون الملفات غير مخزنة تحت المجلد الجذر ولكن تحت المجلد الفرعي بدلاً من ذلك؟

على أي حال ، هل يمكنك تجربة هذا الأسلوب فقط للتأكد من إرجاع العناصر أم لا؟

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
Traceback (آخر مكالمة أخيرة):
ملف ".sharePoint_office365_test4.py" ، السطر 36 ، بتنسيق
ctx.execute_query ()
ملف "C: UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_runtime_context.py" ، السطر 36 ، في execute_query
self.pending_request.execute_query ()
ملف "C: UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_request.py" ، السطر 32 ، في execute_query
إرجاع self.execute_pending_queries ()
ملف "C: UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_request.py" ، السطر 38 ، في execute_pending_queries
استجابة = self.execute_request_direct (طلب)
ملف "C: UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365runtimeclient_request.py" ، السطر 109 ، في execute_request_direct
self.context.ensure_form_digest (request_options)
ملف "C: UsersfooAppDataLocalProgramsPythonPython36libsite-packagesoffice365sharepointclient_context.py" ، السطر 27 ، في sure_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 (نص النفس ، ** kwargs)
ملف "C: UsersfooAppDataLocalProgramsPythonPython36libjson__init __. py" ، السطر 354 ، بأحمال
إرجاع _default_decoder.decode (رموز)
ملف "C: UsersfooAppDataLocalProgramsPythonPython36libjsondecoder.py" ، السطر 339 ، في فك التشفير
obj ، end = self.raw_decode (s ، idx = _w (s ، 0) .end ())
ملف "C: UsersfooAppDataLocalProgramsPythonPython36libjsondecoder.py" ، السطر 362 ، في raw_decode
رفع JSONDecodeError ("توقع القيمة" ، s ، err.value) من بلا
json.decoder.JSONDecodeError: توقع القيمة: السطر 2 العمود 1 (الحرف 2)
ملاحظة C: UsersfooAppDataLocalProgramsPythonPython36ScriptsSharePoint>

عندما أطبع السلسلة في استثناء raw_decode ، تبدو هكذا ، يرجى الاطلاع على المرفق

شكرا جزيلا على وقتك.
مارسيل

أثناء المراجعة للمرة الثانية (والنظر إلى لقطة الشاشة المقدمة ، شكرًا على ذلك!) ، لقد لاحظت أن عنوان url المقدم يبدو غير صالح:

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

}

يتوافق عنوان Url المقدم مع _absolute Url لصفحة عرض المكتبة_ ولكن ما يتوقعه ClientContext هو siteUrl ، لذلك بدلاً من:

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

يرجى المحاولة:

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

أنت على حق تماما ، هذا كان.
لقد صنعت يومي ، لا أستطيع أن أشكرك بما فيه الكفاية.
م.

تشغيل البرنامج النصي الخاص بك الآن يطبع مثل 15 صفًا:

C: UsersfooAppDataLocalProgramsPythonPython36ScriptsSharePoint> .... python.exe .SharePoint_office365_test4.
اسم الملف: لا شيء
اسم الملف: لا شيء
اسم الملف: لا شيء
اسم الملف: لا شيء
اسم الملف: لا شيء
اسم الملف: لا شيء
اسم الملف: لا شيء
اسم الملف: لا شيء
اسم الملف: لا شيء
اسم الملف: لا شيء
اسم الملف: لا شيء
اسم الملف: لا شيء
اسم الملف: لا شيء

أثناء تشغيل البرنامج النصي الأصلي (أعني لك :) ، أحصل على النتيجة المتوقعة:
اسم الملف: Document.docx
اسم الملف: access_denied.txt

استفساري هو ، كيف يمكنني سرد ​​كافة الملفات الموجودة ضمن المجلد "TEST" من أعلى SS ، على سبيل المثال. هذا بالضبط ما أحاول تحقيقه.

لا أعرف ما إذا كان بإمكاني توضيح مشكلتي بالضبط. تمامًا كما لو كنت تطبع ملفاتك بنجاح في الجذر (أو أيًا كان اسمها ؛ المستندات):

اسم الملف: Document.docx
اسم الملف: access_denied.txt

أنا أيضا أستطيع أن أفعل ذلك. لكن ، تريد الحصول على قائمة الملفات في المجلدات بدلاً من ذلك.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات