Hier ist, was ich verwende.
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()
Alles läuft ohne Fehler, aber am Ende hat mein list_object keine Elemente oder Felder... Wenn ich mir die resource_url im list_object ansehe, ist es nicht die richtige URL. Vor und hinter dem Listennamen befinden sich zusätzliche umgekehrte Schrägstriche. Durch das Entfernen der Schrägstriche und das Kopieren in die Edge-Adressleiste wird eine XML-Datei mit Informationen zur Liste heruntergeladen, aber so wie sie ist, funktioniert es nicht ... also gehe ich davon aus, dass dies den Fehler verursacht ... aber ich tue es nicht t wie man es repariert.
Ich fühle mich so nah... kann mir jemand helfen?
Du bist fast da.
Ihr items
Objekt ist vom Typ ListItemCollection
.
Wenn Sie len(items)
versuchen, sollte die Anzahl der Elemente in der Sammlung zurückgegeben werden
Und Sie können diese Elemente jetzt aufzählen:
for item in items:
print(item.properties)
Jeder Gegenstand ist jetzt vom Typ ListItem
, den Sie bearbeiten können
Außerdem sind die zusätzlichen Backslashes dafür da, die '
im Python-String zu entkommen, das ist völlig normal
Du bist fast da.
Ihritems
Objekt ist vom TypListItemCollection
.
Wenn Sielen(item)
versuchen, sollte die Anzahl der Elemente in der Sammlung zurückgegeben werden
Und Sie können diese Elemente jetzt aufzählen:for item in items: print(item.properties)
Jeder Gegenstand ist jetzt vom Typ
ListItem
, den Sie bearbeiten können
Vielen Dank für Ihre Hilfe, aber print(len(items)) gibt 0 zurück
Wenn es kein Problem mit der resource_url ist. Kann es sein, dass etwas mit den App-Berechtigungen nicht stimmt, die ich für die SharePoint-Site festgelegt habe? Ich habe die Anweisungen von https://docs.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azureacs befolgt (einschließlich des Festlegens der Berechtigungsanforderungs-XML), aber wenn ich zu _layouts/15 . zurückkehre /appinv.aspx-Seite und schauen Sie nach meiner Client-ID, das XML-Feld für die Berechtigungsanforderung ist immer leer ... Dies ist das erste Mal, dass ich dies tue, also bin ich mir nicht sicher, ob es so funktionieren soll oder nicht.
Ich habe diese Einstellungen für die XML verwendet (und ich wähle offensichtlich der Anwendung vertrauen).
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://mycompany.sharepoint.com/sites/mysite" Right="FullControl" />
</AppPermissionRequests>
Dies unterscheidet sich ein wenig von den Anweisungen, die ich auf docs.microsoft.com gefunden habe, aber ich habe nur die Möglichkeit, Zugriff auf meine Site zu gewähren, nicht auf den Mandanten. Die App wird danach in den "Websitesammlungs-App-Berechtigungen" aufgeführt, daher gehe ich davon aus, dass sie funktioniert ... aber die Tatsache, dass ich keine XML-Berechtigungen sehe, wenn ich zu appinv.aspx zurückkehre.
Gute Frage, in meiner Erinnerung, als ich mit Berechtigungsproblemen zu tun hatte, war es sehr klar.
Ihre tatsächlich genehmigte App würde _layouts/15/AppPrincipals.aspx
Und es ist normal, dass Sie die XML-Datei bei appinv nicht sehen.
Wenn ich mich richtig erinnere, war das Zielfernrohr, das ich verwendet habe, http://sharepoint/site/sitecollection
$$
(Bearbeiten:)Hier ist ein Spickzettel: https://medium.com/ng-sp/sharepoint-add-in-permission-xml-cheat-sheet-64b87d8d7600
Haben Sie versucht, sich über den Postboten mit der API zu verbinden?
Folgendes bekomme ich vom Dolmetscher mit meiner aktuellen Verbindung.
>>> 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
Grüße,
Du bist fast da.
Ihritems
Objekt ist vom TypListItemCollection
.
Wenn Sielen(items)
versuchen, sollte die Anzahl der Elemente in der Sammlung zurückgegeben werden
Und Sie können diese Elemente jetzt aufzählen:for item in items: print(item.properties)
Jeder Gegenstand ist jetzt vom Typ
ListItem
, den Sie bearbeiten könnenAußerdem sind die zusätzlichen Backslashes dafür da, die
'
im Python-String zu entkommen, das ist völlig normal
zustimmen und in der Tat sind zusätzliche Backslashes erforderlich, um Apostroph-Zeichen zu maskieren , um die
Dieser Kommentar scheint Licht auf die Ursache zu werfen:
Ich habe diese Einstellungen für die XML verwendet (und ich wähle offensichtlich der Anwendung vertrauen).
<AppPermissionRequests AllowAppOnlyPolicy="true"> <AppPermissionRequest Scope="http://mycompany.sharepoint.com/sites/mysite" Right="FullControl" /> </AppPermissionRequests>
Dies unterscheidet sich ein wenig von den Anweisungen, die ich auf docs.microsoft.com gefunden habe, aber ich habe nur die Möglichkeit, Zugriff auf meine Site zu gewähren, nicht auf den Mandanten. Die App wird danach in den "Websitesammlungs-App-Berechtigungen" aufgeführt, daher gehe ich davon aus, dass sie funktioniert ... aber die Tatsache, dass ich keine XML-Berechtigungen sehe, wenn ich zu appinv.aspx zurückkehre.
der angegebene Bereich sieht _ungültig_ aus: http://mycompany.sharepoint.com/sites/mysite
mycompany
: muss stattdessen ein sharepoint
vordefinierter Platzhalter seinsites/mysite
gleich, muss ein _gültiger_ Platzhalter sein, zB content/sitecollection
oder content/sitecollection/web
Die Lösung wäre also, App-Berechtigungen zu
pro Websitesammlung :
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl" />
</AppPermissionRequests>
pro Web :
<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="FullControl" />
</AppPermissionRequests>
Die Liste der _Berechtigungsbereiche_ finden Sie auf der Seite Add-In-Berechtigungen auf der SharePoint- Seite
Und zu guter Letzt gibt es eine Wiki-Seite, die auch Schritt-für-Schritt-Anleitungen zum Einrichten des App-Prinzipals und zum Erteilen von Berechtigungen bietet.
Danke! Jawohl. Der XML-Berechtigungsbereich scheint die Hauptursache des Problems gewesen zu sein!
Nach meinen ersten Tests scheint es jetzt zu funktionieren.
Das ist toll. Ich habe im letzten Jahr VBA-Skripte in MS Access verwendet, um meine SharePoint-Listen zu aktualisieren. Nachdem ich diesen Teil herausgefunden habe, bin ich einen Schritt näher daran, alles nach Python zu portieren.