PortiBlog

Bouw een Flow om e-mail bijlagen automatisch naar SharePoint te uploaden

25 oktober 2018

Samenvatting

Dit artikel beschrijft stap voor stap en met ondersteunende screenshots hoe je een Flow bouwt die bijlagen uit e-mails automatisch uploadt naar een SharePoint Online bibliotheek en tijdens dat proces het bestand van een unieke naam voorziet door er een datum en tijdstip notatie aan mee te geven. Tevens zit er een voorwaarde in deze Flow die bijlagen van het type .png uitsluit (zoals afbeeldingen in handtekeningen).

Situatie

Ik heb deze Flow recentelijk voor een klant gebouwd. Zij werken met een klein team en beheren een gedeeld postvak in Outlook waarin certificaten als bijlagen van een e-mail binnenkomen, voornamelijk als PDF bestanden. Voorheen moesten zij alle bijlagen eerst lokaal opslaan en deze vervolgens weer selecteren en uploaden naar een SharePoint Online bibliotheek. Repetitief werk en eigenlijk zonde van de tijd. Daarom is er besloten om te kijken of we dit met een Flow zouden kunnen automatiseren.

We hebben gekozen er een Team Flow van te maken (Teamstroom in het Nederlands) zodat naar keuze ook andere medewerkers de Flow kunnen beheren of uitvoeren, en niet alleen de maker ervan.

De eerste versie van de Flow werkte op zich goed, maar we ontdekten al vrij spoedig dat er ook ongewenste bestanden werden geüpload in de vorm van afbeeldingen uit handtekeningen (.png bestanden). Daarom hebben we de Flow uitgebreid met een voorwaarde die dit afvangt.

Tevens bleek dat als een e-mail meerdere bijlagen bevatte met dezelfde bestandsnaam (bijvoorbeeld scan.pdf) er dan slechts 1 werd geüpload en de rest niet. Daarom hebben we een extra stap toegevoegd die de datum en het tijdstip van uploaden aan de bestandsnaam toevoegt. Daarmee wordt de naam uniek en worden alle bijlagen netjes naar de bibliotheek geüpload.

De Flow bouwen

Open Flow door linksboven op de app launcher (menu icoon) te klikken en Flow te selecteren. Zie je hem niet bij de Apps staan, klik dan onderaan op All apps en zoek en/of selecteer Flow:

Je kunt Flow ook starten vanuit een moderne bibliotheek door op de Flow knop in de optiebalk te klikken en See your flows te selecteren:

Klik op Teamstromen en klik op + Leeg item maken:

 Een korte informatie pagina verschijnt. Kies Leeg item maken:

Een nieuw scherm verschijnt, dit is je lege canvas waarin je de Flow gaat bouwen. Deze Flow begint wanneer er een nieuwe e-mail in een gedeeld postvak (inbox) binnenkomt. Type daarom in de zoekbalk bovenaan de woorden "gedeeld postvak" en Flow zal je acties en triggers tonen die voldoen aan jouw zoekopdracht. Klik op de trigger Wanneer er een nieuwe e-mail binnenkomt in een gedeeld postvak:

Vul het e-mailadres in. In het veld daaronder, Map, kun je op het folder icoontje aan de rechterkant klikken en eventueel aangeven om welke specifieke folder het gaat, binnen dat postvak. Ik laat hem voor deze Flow op "Inbox" staan want daar komen de e-mails met bijlagen binnen. Klik vervolgens onderaan op het blauwe linkje Geavanceerde opties weergeven:

Het scherm klapt naar onderen uit en je ziet nu extra opties. Zorg ervoor dat het veld "Bijlagen Toevoegen" op Ja staat.
Klik vervolgens onderaan op Geavanceerde opties verbergen om het venster weer in te klappen:

Een algemene opmerking tussendoor: elk Flow element/schermpje (zoals hieronder te zien) bestaat in principe uit een gekleurde top balk/header waarin je de gebruikte app ziet en de naam. Met de drie puntjes rechtsboven kun je extra opties tevoorschijn tonen:

We gaan nu verder met bouwen door eronder op de knop + Nieuwe stap te klikken:

Je krijgt dan een aantal opties te zien. Flow geeft af en toe pop-ups met tips en toelichting. Klik op Een actie toevoegen:

Een scherm verschijnt met daarin een zoekbalk, daaronder Connectoren (apps die je in je Flow kunt gebruiken) en daaronder een gedeelte met mogelijke acties:

Als je de actie ziet die je nodig hebt, kun je die direct selecteren. Anders raad ik aan om de zoekbalk te gebruiken. Hieronder heb ik "variab" getypt en dat is genoeg om te vinden waar ik naar op zoek ben namelijk de actie Variabele initialiseren. Selecteer die:

Het scherm voor Variabele initialiseren verschijnt. Klik in het veld Naam en typ "AttachmentName" (bijlage naam). Selecteer in het veld Type Reeks en zorg dat bij Waarde "Eerste waarde invoeren" staat geselecteerd. Klik tenslotte rechtsboven op de drie puntjes en selecteer Naam wijzigen.

De cursor verschijnt in de paarse header, achter de actie naam. Type daar " - AttachmentName" en druk op Enter. Nu heb je de naam van dit element aangepast.

Klik vervolgens onder het paarse schermpje op het blauwe plus (+) icoontje om een nieuwe stap toe te voegen. Kies weer Variabele initialiseren maar noem deze nu "Timestamp" (tijdstip notitie/stempel). Zet Type op Reeks en Waarde op Eerste waarde invoeren. Als je hiermee klaar bent moet het er uit zien zoals hieronder:

We hebben nu het begin gebouwd. Laten we vooral niet vergeten de Flow een naam te geven en tussentijds op te slaan zodat ons werk niet verloren gaat, mocht er iets fout gaan. Klik daarom linksboven in het scherm op Naamloos en type een beschrijvende titel voor jouw Flow zodat je deze eenvoudig kunt herkennen als je later meerdere Flows in je overzicht heb staan.

Mocht je overigens ergens een fout maken of een gedeelte overnieuw willen doen, klik dan op de drie puntjes in zo'n element en kies Verwijderen. Flow geeft ter check een melding om zeker te weten dat je dit element uit je workflow wilt verwijderen. Klik dan OK. Voeg vervolgens de gewenste actie of trigger opnieuw toe.

We gaan nu verder door onderaan wederom op + Nieuwe stap te klikken. Selecteer dit keer ...Meer en kies Een apply to each toevoegen:

Zoals de naam al aangeeft gelden de acties die je in dit gedeelte gaat toevoegen voor alle items waar de Flow op wordt uitgevoerd.

Het scherm opent. Flow geeft vaak handige suggesties op basis van eerder ingevulde velden of ingestelde acties of triggers. Je moet nu een uitvoer selecteren uit de vorige stappen. In ons geval is dat Bijlagen. Klik daarop en hij zal aan het veld worden toegevoegd. Klik vervolgens eronder op Een voorwaarde toevoegen:

We gaan nu een voorwaarde definiëren. Deze stap is optioneel: het zorgt er straks voor dat deze Flow niet wordt uitgevoerd op bestanden van het type .png, dus afbeeldingen. Deze stap hebben we voor de klant opgenomen om te zorgen dat afbeeldingen uit e-mail handtekeningen niet ook in de SharePoint bibliotheek worden opgeslagen, maar alleen gewenste bestanden die op het gedeelde postvak binnenkomen zoals Word, Excel of PDF bestanden.

Trouwens, als je dit gedeelte niet nodig hebt kun je de rest van de Flow (vanaf de actie "Variabele instellen") gewoon binnen deze huidige "Op elk(e) toepassen" actie inbouwen.

Je krijgt onderstaand scherm te zien met een Ja en Nee gedeelte:

Je dient als eerst een waarde op te geven voor de voorwaarde. Selecteer uit de suggesties dan Naam. Mocht je de gewenste waarde niet zien, klik dan op Meer weergeven daaronder.
Het kan overigens ook voorkomen dat er een keuzescherm aan de rechterkant van het venster opent. Dit is afhankelijk van je schermresolutie. Waarschijnlijk zie je dan een scherm getiteld "Dynamische Inhoud" staan, met relevante waardes eronder. Kies dan in dit geval dus voor Naam.

Selecteer in het drop-down veld daaronder bevat geen en type senslotte .png als waarde.

Daarmee is de voorwaarde gedefinieerd. Nu moeten we nog aangeven wat er dan als actie moet worden uitgevoerd. Klik daarom in het Ja gedeelte op Een actie toevoegen:

De acties die we nu gaan toevoegen zorgen ervoor dat er een datum en tijdstip notatie aan de bestandsnaam wordt meegegeven. Dat gedeelte heb ik overgenomen van dit PowerUser artikel van Microsoft.

Typ wederom "variabel" (of dus een gedeelte daarvan) en selecteer dit keer Variabele instellen:

Klik in het Naam veld en een drop-down verschijnt. Hierin worden nu de variabelen getoond die we aan het begin van deze workflow gedefinieerd hebben. Kies AttachmentName:

Er moet ook nog een waarde worden ingevuld bij het Waarde veld. Typ "naam" in de zoekbalk van het venster dat rechts verschijnt en selecteer de waarde Naam:

Wijzig tevens de naam van dit element door op de drie puntjes te klikken en Naam wijzigen te selecteren:

Type in de header " - AttachmentName" en druk op Enter om te bevestigen:

Nadat je deze variabele hebt ingesteld gaan we er nog een toevoegen. Klik daarom op Een actie toevoegen:

Geef het element de titel "Timestamp" en selecteer in het Naam veld: Timestamp.
In het Waarde veld gaan we dit keer een formule gebruiken, klik daarom in het rechter schermpje op Expressie:

Kopieer onderstaande formule en plak dat in het Expressie veld en klik op OK. Deze formule geeft aan hoe de datum en tijdstip notatie moet worden weergegeven:

 

formatDateTime(utcNow(),'yyyMMdd-hhmmss')

Voeg nog een actie toe en typ in de zoekbalk "opstellen" en kies uit de resultaten: Gegevensbewerkingen - Opstellen:

De formules die we zo gaan toevoegen knippen in feite de bestaande bestandsnaam op en voegen daar een datum en tijdstip notatie aan toe. Daarna wordt de bestandsnaam samengevoegd tot een complete naam.

Selecteer voor de Invoer wederom Expressie en kopieer onderstaande formule en vul die daar in, en klik OK:

first(split(variables('AttachmentName'),'.'))

Wijzig de naam van dit element in Opstellen-GetFileName:

Dat ziet er dan uit zoals hieronder. Het is belangrijk dat er geen spaties zitten tussen Opstellen en GetFileName, alleen een streepje.

Voeg vervolgens op dezelfde wijze nog een Opstellen-actie toe. Noem deze Opstellen-GetFileExtension en gebruik als uitvoer de onderstaande formule in het Expressie veld (net zoals we hierboven hebben gedaan):

last(split(variables('AttachmentName'),'.'))

Voeg tenslotte op vergelijkbare manier nog 1 Opstellen-actie toe en geef die de naam Opstellen-ConcatFullFileName en gebruik als uitvoer de onderstaande formule in het Expressie veld:

concat(outputs('Opstellen-GetFileName'),'-',variables('Timestamp'),'.',outputs('Opstellen-GetFileExtension'))

Het moet er dan zo uit zien:

De laatste stap van deze Flow (ja, we zijn er bijna!) betreft het aanmaken van een bestand in SharePoint. Hierdoor wordt de bijlage ge-upload naar de SharePoint bibliotheek.

Voeg een nieuwe actie toe en typ "maken". Selecteer de actie SharePoint - Bestand maken:

Geef in het Siteadres veld de url (web adres) op van de site / portal.
Kies bij Mappad de gewenste lijst of bibliotheek.
Kies bij Bestandsnaam de uitvoer zoals die door de laatste Opstel actie is aangemaakt. Klik daarom in het rechter venster, onderaan, bij Opstellen-ConcatFullFileName op de blauwe link Meer weergeven:

Kies vervolgens Uitvoer:

Dit zorgt ervoor dat de bijlage de naam zal krijgen zoals die net in de voorgaande stap is opgebouwd. Vandaar dat je die uitvoer (output) daarvoor wilt gebruiken.

Als laatste vul je een waarde in voor het veld Bestandsinhoud. Klik in dat veld. Het pop-up venster verschijnt rechts ervan. Typ "inhoud" en klik op de blauwe "Meer weergeven" link eronder om relevante waardes te tonen:

Selecteer Inhoud:

En klaar! De volledige Flow ziet er als volgt uit:

Merk op dat we bij het rode "Indien nee" gedeelte niets hebben toegevoegd. Dat klopt want als de bijlage namelijk wel van het type .png is dan willen we daar niets mee doen. We willen deze Flow alleen toepassen op overige bestandstypen die op dit gedeelde postvak binnen komen, zoals PDF, Word, Excel etc.

Nu is het tijd onze gloednieuwe Flow op te slaan en te testen. Klik rechtsboven in op Opslaan.

Mocht je onverhoopt een foutmelding krijgen, zoals het voorbeeld hieronder, controleer dan of de formules die je hebt toegevoegd in de voorgaande stappen echt kloppen (geen type of syntax fouten bevat) en exact overeenkomen met de namen die worden gerefereerd, zoals "Opstellen-ConcatFullFileName" (dus zonder spaties).

Klik tenslotte rechtsbovenin op Testen:

Aangezien dit een nieuwe Flow is selecteer je Ik ga de triggeractiviteit uitvoeren en klik je op Opslaan en testen:

Stuur een test email met bijlagen naar het betreffende postvak en aanschouw de Flow magic! :-)

En dit is het resultaat in SharePoint: de bijlage is geüpload en heeft de datum en het tijdstip meegekregen van het moment van uploaden, waardoor het een unieke bestandsnaam is geworden:

Geïnspireerd geraakt? Bekijk ook andere Flow artikelen van mijn collega's voor nog meer handige en interessante dingen die je met Microsoft Flow kunt doen.

Succes, en veel bouwplezier gewenst!

Submit a comment