أهلا،
هدفي هو طباعة محتويات مكتبة / قائمة مستندات موقع 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"]))
راجع للشغل باستخدام 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"]))
أهلا،
أحصل على ما يلي عند تشغيل الكود الخاص بك:
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
أنا أيضا أستطيع أن أفعل ذلك. لكن ، تريد الحصول على قائمة الملفات في المجلدات بدلاً من ذلك.