Suche

SharePoint API /web – folders

Themen

Ordnerverwaltung in SharePoint – Einfach, direkt und ohne Graph API

Die SharePoint API Ordnerverwaltung über den Endpunkt /web/folders ermöglicht das Erstellen, Bearbeiten und Löschen von Ordnern innerhalb einer SharePoint-Dokumentbibliothek. Mit den HTTP-Methoden POST, MERGE und DELETE lassen sich Ordner gezielt per REST-API verwalten und automatisieren.

Du kannst Ordner abrufen, neue Ordner erstellen oder bestehende löschen. Und ja, auch komplexe Ordnerstrukturen lassen sich komplett durchlaufen. Das bedeutet konkret: Du holst dir den Namen, den Pfad oder das Erstellungsdatum eines Ordners ganz easy per REST. Du kannst Ordner automatisch anlegen, verschieben oder löschen – genau so, wie du es brauchst.

Typische Einsatzszenarien? Du baust Flows, die für jedes neue Projekt automatisch eine komplette Ordnerstruktur anlegen – Hauptordner, Unterordner, alles dabei. Oder deine Power App erzeugt beim Speichern eines Formulars automatisch den passenden Ordner im SharePoint, ohne dass der User groß was machen muss. Archivierungen? Kein Problem! Alte Ordner lassen sich automatisch erkennen und löschen oder verschieben. Sogar Self-Service-Portale sind machbar, in denen die Nutzer selbst Ordner erstellen oder löschen – direkt in Power Apps, ohne SharePoint überhaupt zu öffnen.

Kurz gesagt: Mit der SharePoint REST API steuerst du die komplette Ordnerverwaltung vollautomatisch und flexibel – ganz ohne Umwege. Und wenn du einmal den Dreh raus hast, willst du garantiert nicht mehr anders arbeiten.

/web/folders

 

GET

Mit diesem Endpunkt kannst du dir die Ordnerstruktur einer SharePoint-Website anzeigen lassen. Der Befehl „GET _api/web/folders“ liefert eine Liste aller Ordner, die sich direkt unter der Website befinden. Das ist super praktisch, wenn du schnell einen Überblick über vorhandene Ordner brauchst oder automatisiert prüfen möchtest, welche Ordner vorhanden sind. 

Power Apps

'HTTPwithMicrosoftEntraID(preauthorized)'.InvokeHttp(
    "GET",
    With(
        {
            hostname: "contoso.sharepoint.com",
            'server-relative-path': "sites/Marketing"
        },
        $"https://{hostname}/{'server-relative-path'}/_api/web/folders"
    ),
    {
        headers: Table(
            {
                key: "accept",
                value: "application/json;odata=verbose"
            },
            {
                key: "content-type",
                value: "application/json"
            }
        )
    }
)

/web/GetFolderByServerRelativeUrl({path})

 

GET

Dieser Endpunkt holt dir gezielt Infos zu einem bestimmten Ordner in SharePoint. Mit „GET _api/web/GetFolderByServerRelativeUrl(path)“ gibst du einfach den Pfad zum Ordner an und bekommst Details wie Name, Unterordner oder Dateien zurück. Ideal, wenn du gezielt mit einem Ordner arbeiten willst, ohne alle Ordner durchsuchen zu müssen.

Power Apps

'HTTPwithMicrosoftEntraID(preauthorized)'.InvokeHttp(
    "GET",
    With(
        {
            hostname: "contoso.sharepoint.com",
            'server-relative-path': "sites/Marketing",
            serverrelativeUrl: "Library"
        },
        $"https://{hostname}/{'server-relative-path'}/_api/web/getFolderByServerRelativeUrl('{serverrelativeUrl}')"
    ),
    {
        headers: Table(
            {
                key: "accept",
                value: "application/json"
            }
        )
    }
)

DELETE

Mit diesem Endpunkt kannst du gezielt einen Ordner in SharePoint löschen. „DELETE /web/GetFolderByServerRelativeUrl({path})“ entfernt den Ordner samt Inhalt aus der angegebenen URL. Das ist praktisch, wenn du Ordner automatisch bereinigen oder löschen willst – natürlich mit Vorsicht zu genießen!

Power Apps

With(
    {
        _hostname: "contoso.sharepoint.com",
        '_server-relative-path': "sites/Marketing",
        _serverrelativeUrl: "Library/Folder/New Folder"
    },
    'HTTPwithMicrosoftEntraID(preauthorized)'.InvokeHttp(
        "POST",
        With(
            {
                hostname: _hostname,
                'server-relative-path': '_server-relative-path',
                serverrelativeUrl: _serverrelativeUrl
            },
            $"https://{hostname}/{'server-relative-path'}/_api/web/getFolderByServerRelativeUrl('{serverrelativeUrl}')"
        ),
        {
            headers: Table(
                {
                    key: "IF-MATCH",
                    value: 'HTTPwithMicrosoftEntraID(preauthorized)'.InvokeHttp(
                        "GET",
                        With(
                            {
                                hostname: _hostname,
                                'server-relative-path': '_server-relative-path',
                                serverrelativeUrl: _serverrelativeUrl
                            },
                            $"https://{hostname}/{'server-relative-path'}/_api/web/getFolderByServerRelativeUrl('{serverrelativeUrl}')?$select=ETag"
                        ),
                        {
                            headers: Table(
                                {
                                    key: "accept",
                                    value: "application/json;odata=verbose"
                                },
                                {
                                    key: "content-type",
                                    value: "application/json"
                                }
                            )
                        }
                    ).d.ETag
                },
                {
                    key: "X-HTTP-Method",
                    value: "DELETE"
                },
                {
                    key: "X-RequestDigest",
                    value: 'HTTPwithMicrosoftEntraID(preauthorized)'.InvokeHttp(
                        "POST",
                        With(
                            {
                                hostname: _hostname,
                                'server-relative-path': '_server-relative-path'
                            },
                            $"https://{hostname}/{'server-relative-path'}/_api/contextinfo"
                        ),
                        {
                            body: JSON(Blank()),
                            headers: Table(
                                {
                                    key: "accept",
                                    value: "application/json;odata=verbose"
                                }
                            )
                        }
                    ).FormDigestValue
                }
            )
        }
    )
)

/web/GetFolderByServerRelativeUrl({path})/Folders/add()

 

POST

Mit diesem Endpunkt kannst du in SharePoint ganz einfach einen neuen Unterordner anlegen. Über „POST _api/web/GetFolderByServerRelativeUrl({path})/Folders/add()“ gibst du den Pfad zum Zielordner an und den Namen für den neuen Ordner. Perfekt, wenn du automatisch Ordnerstrukturen erstellen willst, zum Beispiel für Projekte oder Teams.

Power Apps

'HTTPwithMicrosoftEntraID(preauthorized)'.InvokeHttp(
    "POST",
    With(
        {
            hostname: "contoso.sharepoint.com",
            'server-relative-path': "sites/Marketing",
            serverrelativeUrl: "Library/Folder"
        },
        $"https://{hostname}/{'server-relative-path'}/_api/web/getFolderByServerRelativeUrl('{serverrelativeUrl}')/Folders/add('New Folder again')?$expand=Properties"
    ),
    {
        headers: Table(
            {
                key: "accept",
                value: "application/json;odata=verbose"
            },
            {
                key: "content-type",
                value: "application/json"
            }
        )
    }
)

/web/GetFolderByServerRelativeUrl({path})/ListItemAllFields

 

GET

Dieser Endpunkt liefert dir die Metadaten eines Ordners in SharePoint. Mit „GET /web/GetFolderByServerRelativeUrl({path})/ListItemAllFields“ bekommst du alle Listeneinträge, die dem Ordner zugeordnet sind, also z.B. Titel, Ersteller oder benutzerdefinierte Spalten. Perfekt, wenn du auf Metadaten zugreifen möchtest, um damit weiterzuarbeiten.

Power Apps

'HTTPwithMicrosoftEntraID(preauthorized)'.InvokeHttp(
    "GET",
    With(
        {
            hostname: "contoso.sharepoint.com",
            'server-relative-path': "sites/Marketing",
            serverrelativeUrl: "Library/Folder"
        },
        $"https://{hostname}/{'server-relative-path'}/_api/web/getFolderByServerRelativeUrl('{serverrelativeUrl}')/ListItemAllFields"
    ),
    {
        headers: Table(
            {
                key: "accept",
                value: "application/json"
            }
        )
    }
)

/web/lists/getBy()/items(id)/validateUpdateListItem

 

POST

Wenn du in SharePoint den Namen eines Ordners ändern willst, ist dieser Endpunkt genau richtig. Über „POST _api/web/lists(‚{listId}‘)/items({itemId})/validateUpdateListItem“ kannst du gezielt den Titel eines Listenelements anpassen, das den Ordner repräsentiert. Das Praktische: Der Endpunkt prüft dabei direkt, ob deine Änderungen gültig sind. So änderst du den Ordnernamen sauber und ohne Umwege.

Power Apps

With(
    {
        hostname: "contoso.sharepoint.com",
        'server-relative-path': "sites/Marketing",
        listId: "46605d23-7f4f-4074-afba-da5e27f4e175",
        itemId: First(
            'HTTPwithMicrosoftEntraID(preauthorized)'.InvokeHttp(
                "GET",
                With(
                    {
                        hostname: "contoso.sharepoint.com",
                        'server-relative-path': "sites/Marketing",
                        listId: "46605d23-7f4f-4074-afba-da5e27f4e175",
                        folderName: "Ordnername"
                    },
                    $"https://{hostname}/{'server-relative-path'}/_api/web/lists('{listId}')/items?$filter=FSObjType eq 1 and FileLeafRef eq '{folderName}'&$select=Id,FileLeafRef,FileRef"
                ),
                {
                    headers: Table(
                        {
                            key: "accept",
                            value: "application/json"
                        }
                    )
                }
            ).value
        ).Id
    },
    'HTTPwithMicrosoftEntraID(preauthorized)'.InvokeHttp(
        "POST",
        $"https://{hostname}/{'server-relative-path'}/_api/web/lists('{listId}')/items({itemId})/validateUpdateListItem",
        {
            body: JSON(
                {
                    formValues: [
                        {
                            FieldName: "FileLeafRef",
                            FieldValue: "Neuer Ordnername"
                        }
                    ]
                }
            ),
            headers: Table(
                {
                    key: "accept",
                    value: "application/json"
                }
            )
        }
    )
)

noch mehr interessante Beiträge

Nach oben scrollen