2017-05-24 2 views
0

Ich versuche, die Graph-API zu verwenden, um eine Hierarchie von Dateien in einer SharePoint-Dokumentbibliothek abzurufen. Da Dokumentbibliotheken sind in „Laufwerke“ gespeichert (es ist technisch korrekt zu nennen Microsoft Onedrive?), Ich bin mit dem /drives Endpunkt eine Liste von Dateien zu holen, wie folgt aus:Abrufen benutzerdefinierter Spalten für DriveItems in MS Graph

https://graph.microsoft.com/beta/drives/{driveid}/root/children 

Ich möchte bekommen Informationen aus einigen benutzerdefinierten Spalten, die beim Anzeigen dieser Elemente über Sharepoint vorhanden sind. Die Verwendung von ?expand=fields funktioniert nicht, da fields nur im listItem-Objekt des /sites-Endpunkts existiert, nicht im driveItem-Objekt des /drives-Endpunkts. Wenn ich versuche, die listItem von einem einzigen driveItem zu erhalten (Durchqueren der Graph von Microsoft Onedrive zu Sharepoint), und dann die Felder erweitert, wie

https://graph.microsoft.com/beta/drives/{driveid}/items/{driveItemId}/listItem?expand=fields 

diese abruft eingebaute in Spalten (Autor, DocIcon, und einige andere), aber scheint die benutzerdefinierten Spalten nicht abzurufen. Ich habe auch versucht, die Liste der Dateien von der /sites Endpunkt, und mit ?expand=fields erhalten Sie die benutzerdefinierten Spalten, aber es ruft jede Datei aus jedem Unterordner, anstatt den aktuellen Ordnerpfad. Aber ich denke, das verdient eine eigene SO-Frage.

Ist es möglich, benutzerdefinierte Spalteninformationen von driveItems abzurufen?

+0

Was sind die Werte von 'field.Hidden' und' field.ShowInDisplayForm' für Ihre benutzerdefinierten Spalten? – Brad

+0

Da Sharepoint Online relativ neu ist, bin ich mir nicht sicher, wie ich diese über das webbasierte Frontend überprüfen kann. Mit Graph Explorer kann ich Hidden = false sehen, aber es gibt keinen ShowInDisplayForm-Wert. Auch Indexed = false, ReadOnly = false und Required = false, wenn diese überhaupt helfen. –

Antwort

1

Ich habe ein paar Tests gemacht. Was sollte funktionieren ist:

https://graph.microsoft.com/beta/drives/ {DriveID}/root/Kinder wählen $ = id, MyCustomColumnName

Allerdings, wenn ich das täte, es sind gerade die ID-Feld. Meiner Meinung nach ist das ein Fehler im Diagramm, weil der gleiche Abfragetyp in der SharePoint-REST-API funktioniert.

Wenn dies hilft, können Sie dies mithilfe der SharePoint-REST-API erreichen. Ihre Endpunktabfrage wäre etwa wie folgt:

https://www.site.sharepoint.com/sites/ {sitename}/_api/web/lists ('{DocumentLibraryID}')/items? $ Select = id , MyCustomColumnName

Es gibt andere Möglichkeiten, dieselbe Abfrage auszuführen.

+0

Es fühlt sich an wie ein Käfer. Hoffentlich kann jemand von MSFT reinhören und etwas Offizielleres geben. Vielleicht ist es noch nicht implementiert und wird in einer zukünftigen Version von Graph API erscheinen. Ich schätze, ich werde SharePoint API verwenden, bis ich etwas anderes höre. –

+2

Bei dem Versuch, auf der Graph-API zu bleiben, habe ich die Drives-API abgefragt, um auch die Sharepoint-ID der Datei '/ drives/{driveId}/root/children? Select = sharepointIds, name' auszuwählen und dann diese Sharepoint-Liste zu verwenden Item ID in der Sites API '/ sites/root/sites/{sitePath}/lists/{listId}/items/{listItemId}? Expand = Felder & select = fields' –

0

Versuchen Sie den Listenendpunkt, erweitern Sie driveItem und Felder. Sie haben jetzt sowohl benutzerdefinierte Spaltenfelder als auch Laufwerksartikelfelder.

 /beta/sites/[site-id]/lists/[list-id]/items?expand=driveitem,fields&filter=(fields/customColumn eq 'someValue') 
+0

Ja, das funktioniert, um die benutzerdefinierten Spalten, aber leider abrufen Es ruft alle Elemente in der Dokumentbibliothek ab und nicht nur die Objekte in einem bestimmten Ordner.Mit einer großen Dokumentbibliothek, die viele verschachtelte Unterordner enthält, würde viel Bandbreite gespart, wenn nur der gewünschte Unterordner ohne erzwungene Rekursion abgerufen werden könnte. –

Verwandte Themen