هذا ما أستخدمه.
site_url = "https://mycompany.sharepoint.com/sites/mysite/"
clientid = "12345"
clientsecret = "67890"
clientcredentials = ClientCredential(clientid, clientsecret)
ctx = ClientContext(site_url).with_credentials(clientcredentials)
target_list = "ListIWant"
list_object = ctx.web.lists.get_by_title(target_list)
items = list_object.get_items()
ctx.load(items)
ctx.execute_query()
كل شيء يعمل بدون أخطاء ، ولكن في النهاية لا يحتوي list_object الخاصة بي على أي عناصر أو حقول ... عندما أنظر إلى Resource_url في list_object ، فإنه ليس عنوان URL الصحيح. توجد شرطات خلفية إضافية أمام وخلف اسم القائمة. تؤدي إزالة الشرطات المائلة والنسخ في شريط عنوان Edge إلى تنزيل ملف XML به معلومات حول القائمة ، ولكن كما هي ، لن تعمل ... لذلك أفترض أن هذا هو سبب الخطأ ... لكنني لا أفعل ر كيفية اصلاحها.
أشعر أنني قريب جدًا ... هل يمكن لأي شخص المساعدة؟
أنت على وشك الانتهاء.
الكائن items
من النوع ListItemCollection
.
إذا جربت len(items)
، فيجب أن تُرجع كمية العناصر الموجودة في المجموعة
ويمكنك الآن تعداد هذه العناصر:
for item in items:
print(item.properties)
أصبح كل عنصر الآن من النوع ListItem
الذي يمكنك معالجته
أيضًا ، الشرطات المائلة العكسية الإضافية مخصصة للهروب من '
في سلسلة Python ، هذه طبيعية تمامًا
أنت على وشك الانتهاء.
الكائنitems
من النوعListItemCollection
.
إذا جربتlen(item)
، فيجب أن تُرجع كمية العناصر الموجودة في المجموعة
ويمكنك الآن تعداد هذه العناصر:for item in items: print(item.properties)
أصبح كل عنصر الآن من النوع
ListItem
الذي يمكنك معالجته
شكرًا لك على مساعدتك ولكن print (len (items)) ترجع 0
إذا لم تكن مشكلة في Resource_url. هل من المحتمل أن يكون هناك خطأ ما في أذونات التطبيق التي قمت بتعيينها لموقع SharePoint؟ لقد اتبعت التوجيهات من https://docs.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azureacs (بما في ذلك تعيين طلب الإذن XML) ، ولكن عندما أعود إلى _ Layouts / 15 /appinv.aspx الصفحة وابحث عن معرف العميل الخاص بي ، يكون حقل XML لطلب الإذن فارغًا دائمًا ... هذه هي المرة الأولى التي أقوم فيها بذلك ، لذا لست متأكدًا مما إذا كانت هذه هي الطريقة التي من المفترض أن تعمل بها أم لا.
لقد كنت أستخدم هذه الإعدادات لـ xml (واخترت الثقة في التطبيق بوضوح).
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://mycompany.sharepoint.com/sites/mysite" Right="FullControl" />
</AppPermissionRequests>
هذا مختلف قليلاً عما كان في الإرشادات التي وجدتها على docs.microsoft.com ، لكن لدي فقط القدرة على منح حق الوصول إلى موقعي ، وليس المستأجر. تم إدراج التطبيق في "أذونات تطبيق مجموعة الموقع" بعد ذلك ، لذلك أفترض أنه يعمل ... لكن الحقيقة أنني لا أرى أي أذونات xml عندما أعود إلى appinv.aspx.
سؤال جيد ، في ذاكرتي ، عندما كنت أتعامل مع قضايا الإذن ، كان واضحًا جدًا.
سيكون التطبيق الذي تمت الموافقة عليه بالفعل بسعر _layouts/15/AppPrincipals.aspx
ومن الطبيعي ألا ترى xml في appinv.
إذا كانت ذاكرتي تعمل بشكل صحيح ، فإن النطاق الذي استخدمته كان http://sharepoint/site/sitecollection
رغم ذلك
(تحرير :) هنا ورقة الغش: https://medium.com/ng-sp/sharepoint-add-in-permission-xml-cheat-sheet-64b87d8d7600
هل حاولت الاتصال بواجهة برمجة التطبيقات من خلال ساعي البريد؟
هذا ما أحصل عليه من المترجم مع اتصالي الحالي.
>>> items = ctx.web.lists.get_by_title('Events').items
>>> items
<office365.sharepoint.listitems.listItem_collection.ListItemCollection object at 0x10d064af0>
>>> len(items)
0
>>> ctx.load(items)
>>> ctx.execute_query()
>>> len(items)
2
تحيات،
أنت على وشك الانتهاء.
الكائنitems
من النوعListItemCollection
.
إذا جربتlen(items)
، فيجب أن تُرجع كمية العناصر الموجودة في المجموعة
ويمكنك الآن تعداد هذه العناصر:for item in items: print(item.properties)
أصبح كل عنصر الآن من النوع
ListItem
الذي يمكنك معالجتهأيضًا ، الشرطات المائلة العكسية الإضافية مخصصة للهروب من
'
في سلسلة Python ، هذه طبيعية تمامًا
توافق ، وفي الواقع ، تعد الخطوط المائلة العكسية الإضافية إلزامية للهروب من حرف الفاصلة العليا لجعل
يبدو أن هذا التعليق يلقي الضوء على السبب الجذري:
لقد كنت أستخدم هذه الإعدادات لـ xml (واخترت الثقة في التطبيق بوضوح).
<AppPermissionRequests AllowAppOnlyPolicy="true"> <AppPermissionRequest Scope="http://mycompany.sharepoint.com/sites/mysite" Right="FullControl" /> </AppPermissionRequests>
هذا مختلف قليلاً عما كان في الإرشادات التي وجدتها على docs.microsoft.com ، لكن لدي فقط القدرة على منح حق الوصول إلى موقعي ، وليس المستأجر. تم إدراج التطبيق في "أذونات تطبيق مجموعة الموقع" بعد ذلك ، لذلك أفترض أنه يعمل ... لكن الحقيقة أنني لا أرى أي أذونات xml عندما أعود إلى appinv.aspx.
يبدو النطاق المقدم _invalid_: http://mycompany.sharepoint.com/sites/mysite
mycompany
: يجب أن يكون العنصر النائب المحدد مسبقًا sharepoint
بدلاً من ذلكsites/mysite
نفسه ، يجب أن يكون عنصرًا نائبًا _valid_ ، على سبيل المثال content/sitecollection
أو content/sitecollection/web
لذلك ، سيكون الحل هو منح أذونات التطبيق من خلال تقديم طلب أذونات _ صالح_ ، على سبيل المثال:
لكل مجموعة مواقع :
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl" />
</AppPermissionRequests>
لكل ويب :
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="FullControl" />
</AppPermissionRequests>
يمكن العثور على قائمة _نطاقات الإذن_في أذونات الوظيفة الإضافية في صفحة
وأخيرًا وليس آخرًا ، توجد صفحة wiki تقدم أيضًا إرشادات خطوة بخطوة حول كيفية إعداد التطبيق الأساسي ومنح الأذونات.
شكرا لك! نعم فعلا. يبدو أن نطاق إذن XML كان السبب الجذري للمشكلة!
من الاختبار الأولي الذي أجريته يبدو أنه يعمل الآن.
هذا عظيم. لقد كنت أستخدم البرامج النصية لـ VBA في MS Access خلال العام الماضي لتحديث قوائم SharePoint الخاصة بي. إن تحديد هذا الجزء يجعلني أقرب إلى نقل كل شيء إلى Python.