Power Apps – Dodanie pliku do biblioteki – SharePoint REST API

Odwiedź naszą stronę Power Apps

Jeśli szukasz więcej informacji na temat Power Apps i tematów pokrewnych, zajrzyj tam. Znajdziesz tam wszystkie artykuły dotyczące Power Apps w jednym miejscu.

lub czytaj dalej…


Dodanie pliku do biblioteki za pomocą SharePoint REST API

Dodanie do aplikacji kontrolki dodawania załączników

Tak samo jak w poprzednim przykładzie, potrzebna będzie nam kontrolka dodawania załączników. Różnica polega na tym, że nie potrzebujemy już formularza. Kontrolkę możemy skopiować z dowolnego formularza edycji listy i zapisać poza nim.

Do aplikacji dodajemy kontrolkę Attachments. Nazwiemy ją:

AttachedFile

Dodaj kontrolkę IMAGE. Nie musi być widoczna w interfejsie, będzie wykorzystywana bez konieczności ingerencji użytkownika.

Do aplikacji dodajemy kontrolkę IMAGE. Niech nazywa się:

ImageHelper

Właściwość Image kontrolki ImageHelper a więc wartość ImageHelper.Image ustawiamy na:

Last(AttachedFile.Attachments).Value

Powyższy kod bierze pod uwagę tylko ostatni z załączników dodanych za pomocą kontrolki.

Jeżeli ma być obsługiwany maksymalnie jeden plik warto zmienić w kontrolce AttachedFile wartość MaxAttachments na 1

Gdy planujemy obsługę wielu plików, należy odpowiednio dostosować prezentowane rozwiązanie.

Potrzebujemy jeszcze przycisku który spowoduje umieszczenie pliku w bibliotece dokumentów.

Do aplikacji dodajemy kontrolkę BUTTON.

Dla nas istotne jest co znajduje się w jej właściwości

OnSelect

Dodanie pliku do biblioteki przez SharePoint REST API

Naciśnięcie guzika a więc wywołanie akcji OnSelect wykonuje 2 czynności – przygotowuje dane a następnie wysyła je do SharePoint

Przygotowanie danych

Set(
    varRawJSON,
    JSON(ImageHelper.Image, JSONFormat.IncludeBinaryData)
);


Set(
    varBase64File,
    Mid(
        varRawJSON,
        Find(",", varRawJSON) + 1,
        Len(varRawJSON) - Find(",", varRawJSON) - 1
    )
);

Celem kodu jest uzyskanie czystego formatu base64 zawartości pliku. Dla pliku txt z zawartością taką jak kod powyżej, zmienne będą miały wartości:

varRawJSON

"data:text/plain;base64,U2V0KA0KICAgIHZhclJhd0pTT04sDQogICAgSlNPTihJbWFnZUhlbHBlci5JbWFnZSwgSlNPTkZvcm1hdC5JbmNsdWRlQmluYXJ5RGF0YSkNCik7DQoNCg0KU2V0KA0KICAgIHZhckJhc2U2NEZpbGUsDQogICAgTWlkKA0KICAgICAgICB2YXJSYXdKU09OLA0KICAgICAgICBGaW5kKCIsIiwgdmFyUmF3SlNPTikgKyAxLA0KICAgICAgICBMZW4odmFyUmF3SlNPTikgLSBGaW5kKCIsIiwgdmFyUmF3SlNPTikgLSAxDQogICAgKQ0KKTsNCg=="
varBase64File

U2V0KA0KICAgIHZhclJhd0pTT04sDQogICAgSlNPTihJbWFnZUhlbHBlci5JbWFnZSwgSlNPTkZvcm1hdC5JbmNsdWRlQmluYXJ5RGF0YSkNCik7DQoNCg0KU2V0KA0KICAgIHZhckJhc2U2NEZpbGUsDQogICAgTWlkKA0KICAgICAgICB2YXJSYXdKU09OLA0KICAgICAgICBGaW5kKCIsIiwgdmFyUmF3SlNPTikgKyAxLA0KICAgICAgICBMZW4odmFyUmF3SlNPTikgLSBGaW5kKCIsIiwgdmFyUmF3SlNPTikgLSAxDQogICAgKQ0KKTsNCg==

Przepływ Power Automate wywołujący SharePoint REST API

Inicjuję zmienną FolderName

W ten sam sposób inicjuję zmienne FileName oraz FileContent


Zamieniam FileContent na postać binarną

base64ToBinary(variables('FileContent'))

Wywołanie SharePoint REST API i przesłanie pliku na serwer


Finalnie warto pobrać wynik wywołania i zwrócić do aplikacji na przykład adres URL nowo dodanego pliku


Wywołanie przepływu Power Automate

Nasz kod w akcji OnSelect uzupełniamy o wywołanie przepływu Power Automate

Set(
    var_ReturnValue,

        UploadFile_by_SharePointRESTApi.Run(

            "Documents_Library_Name",
            Last(AttachedFile.Attachments).Name,
            varBase64File
            
        ).serverrelativeurl

);