Login Login
MORE

WIDGETS

Widgets

Wanted articles
Who is online?
Article tools

NavigazioneMarittima:PowerAutomate Tips

From Aino Wiki

Jump to: navigation, search

Un Workflow in PowerAutomate è composto da una sequenza di Workflow Actions.

Actions

Chiamate workflow actions sono le azioni elementari di un flusso di lavoro custom di Power Automate.

Variabili

E' possibile definire variabili tipizzate (mediante "Initialize variable") da usare in un flusso PowerAutomate, nel seguente esempio si definisce una di tipo intero ottenuta dinamicamente da una funzione:

PowerAutomate Task Initialize Variable 01.png

Si può usare anche una action per l'aggiornamento di una variabile ed allo scopo si usa l'action "Set variable"

PowerAutomate Task Initialize Variable 02.png

Array

Definizione ed assegnamento di un array, si usa la notazione JSON.

PowerAutomate array variable.png

Conditions

Funzioni di controllo del flusso per verificare azioni precedenti e conseguentemente direzionare l'esecuzione del flusso.

PowerAutomate Action Control 01.png

Segue esempio di una Condition che corrisponde ad un "IF" il valore da valutare è di tipo testo, nome di un file, che non deve essere racchiuso né da singoli e nè da doppi apici.

PowerAutomate Control Condition 01.png

SharePoint

Get items

Nella vecchia versione:

PowerAutomate Task SP Get items 01.png

Nella nuova:

PowerAutomate Get Items TOP 100.png

Top 100

Di default seleziona 100 records, si cambia:

  • cliccando sui tre puntini a sx, quindi scegliere "Settings"
  • nella sezione "Pagination" impostare la paginazione cliccando sul pulsante On
  • impostare un nuovo limite, il massino è 5000(purtroppo è un parametro obbligatorio)

ORDER BY

E' possibile ordinare gli elementi della lista SharePoint prima di salvarli, nel task cliccare su "Show advanced options", nel campo "Order by" si può usare una sintassi simile a SQL, quindi si può usare il nome campo corrispondente all'omonimo campo della lista seguito da ASC o DESC, si possono usare più campi per un ordinamento composto basta usare il separatore della virgola. Ad Es.:

ID desc, DataCusom asc

Select

Dopo l'estrazione di una lista di dati questi potranno essere selezionati mediante il task SEELCT.
Nella sezione * From si indica l'oggetto della sorgente dati mentre Nella sezione * Map si definisce l'output dei dati dell'elaborazione di selezione. PowerAutomate Task Select 01.png Quanto sarà nella colonna di dx della tabella * Map è ottenibile attraverso il fumetto d'aiuto, dopo la selezione dell'opportuno campo, passando sopra il mouse, si visualizzerà il comando\funzione integrale generato automaticamente al fine di selezionare il dato.

PowerAutomate Task Select Tooltip 01.png

Esistenza file

Non esiste una Action specifica ma si trova un modo per raggiungere lo stesso risultato, più semplice nel caso il file da ricercare sia in una Libray, ad esempio cartella canonica dei documenti.

In Document Library

Il file da cercare può essere anche in una sottocartella il seguente sistema lo cercherà comunque.
La via è usare il connettore\azione "Get Files (properties only)". Vedere il segeunte Post: powerusers.microsoft.com

PowerAutomate SP File Exists in folder 03.png

Alternative

Una alternativa è indicata al post stackoverflow.
Si può usare la Action "Get file metadata using path dal connettore di SharePoint. Quando il file viene trovato abbiamo un output (visibile in modalità Test), JSON, come segue:

PowerAutomate SP File Exists in folder 02.png

In caso negativo ad es. l'output è:

{
    "statusCode": 404,
    "headers": {
        "Cache-Control": "max-age=0, private",
..etc
    },
    "body": {
        "status": 404,
        "message": "File not found\r\nclientRequestId: f9f9d976-a9ba-4df2-bf6a-203e6557b9bc\r\nserviceRequestId: f9f9d976-a9ba-4df2-bf6a-203e6557b9bc"
    }
}

Delete file

Per cancellare un file il cui fileName prima è stato inserito in una variabile:

PowerAutomate Control Condition 02.png

Trattamento Campi strutturati

Considerando che i dati su cui si posson fare delle selezioni o elaborazioni sono di tipo JSON è possibile trattarli definendo delle espressioni che utilizzano una sintassi specifica.
Supponendo che il JSON relativo ai dati rappresentati nel "value" del * From sia come segue

[
   {
      "ID":212,
      "Title":"Dashboard, July 2019",
      "Description":"Dashboard version issued on July 2019, elaborated on the data of June 2019. ",
      "Applicant Name":"Alberto Cravidi",
      "Mail address":"Alberto.Cravidi@vodafone.com",
      "Phone Number":"3488289394",
      "Creation Date":"2019-07-05",
      "Status":"Delivered",
      "Notes":"This request regards the generation of the monthly Dashboard",
      "Platform":[
         {
            "@odata.type":"#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference",
            "Id":0,
            "Value":"All"
         }
      ],
      "Provider":[
         {
            "@odata.type":"#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference",
            "Id":0,
            "Value":"Reply SpA"
         }
      ],
      "Delivery Date":"2019-07-10",
      "Complexity":"Low - No planning, no documentation",
      "Effort":1.0,
      "BaU Activities":"VCVI Dashboard",
      "InProgress Date":"2019-07-05",
      "ToOperation Date":null,
      "Rejected Date":null,
      "Closed Date":null,
      "CC&CV Resource Name":{
         "@odata.type":"#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference",
         "Id":-1,
         "Value":"Umberto GROPPELLI"
      },
      "Delivery Date by CC&CV":"2019-07-10",
      "Delivered Date":"2019-08-22",
      "Delivery Owner":"2 - VCVI",
      "Accepted Date":null,
      "VNO INProgress Date":null,
      "Item Type":"Item",
      "Path":"Lists/Infopath Custom List/"
   },
....etc....

Ad es. per acquisire il dato del campo "Platform" nella seconda colonna della tabella del task Select inserire:

item()?['Platform']?[0]?['Value']

Questo sarà il risultato:

PowerAutomate Task Select Tooltip 02.png

mentre per il campo "CC&CV Resource Name" che non è ottenuto sotto un array scegliere come segue:
PowerAutomate Task Select Tooltip 03.png

Formattazione

Date

Supponendo di trattare il seguente JSON con un campo data da trattare ovvero salvare su un ASCII CSV il campo data con una formattazione specifica.

{
"MiaData": "@formatDateTime(item()?['MiaData'],'dd-MMM-yy')"
}'

Supponiamo anche che questo campo data a volte potrà anche esser nullo, segue la formula che si può adottare per trasformare l'output secondo la formattazione desiderata (formula da inserire nella seconda colonna della action SELECT):

if (empty(item()?['MiaData']), '', formatDateTime(item()?['MiaData'],'dd-MMM-yy'))
// formatDateTime('2009-06-15T13:45:30', 'M/dd/yyyy h:mm tt')      Returns the format 6/15/2009 1:45 PM
// formatDateTime('2009-06-15T13:45:30', 'M/dd/yyyy HH:mm:ss tt')  Returns the format 6/15/2009 13:45:30 PM
// formatDateTime(utcNow(), 'dd-MM-yyyy')                          Returns the current date in the format 15-06-2009
// formatDateTime('2009-06-15T13:45:30', 's')                      Returns the format 2009-06-15T13:45:30

Notare l'uso delle istruzioni if(), empty(), formatDateTime().
Doc formatDateTime()

Triggers

Un flusso può esser eseguito come:

  • Manual triggers: manualmente, "Manual trigger a flow";
  • Event-based triggers: in conseguenza di un determinato evento, es. l'arrivo di una e-mail con determinate caratteristiche;
  • Scheduled triggers: in base ad una schedulazione impostando una action chiamata "Recurrence";
  • Data-driven triggers: scatenati in conseguenza di un cambio nei dati come la modifica di un record in un database o la creazione di un nuovo file in OneDrive.

Schedulazione

Si possono impostare tutte le casistiche, la logica è diversa da quanto è possibile fare con SQL Server.

Si può far partire un flusso impostando un intervallo di esecuzione, nel seguente esempio si avvia un flusso alle 07:30 di ogni giorno:

PowerAutomate Schedulazione con ricorrenza 01.png

Trasformazione Manual Trigger in Recurrence

Dopo il periodo di collaudo si vuol cambiare un flusso da manuale ad automatico con una schedulazione appropriata.
Quindi data il seguente inizio di flusso:

PowerAutomate Scheduling 01.png

Si cancella la prima Action "Manually trigger a flow", non preoccuparsi dopo aver ricevuto un pop-up di warning, si può sempre tornare indietro non salvando il flusso corrente.
A questo punto, poiché ogni flusso deve avere un inizio, selezionare e cliccare sulla action virtuale "Add a trigger".

PowerAutomate Scheduling 02.png

Cercare la action "Recurrence" che è sotto il gruppo "Schedule". A questo punto si può configurare la schedulazione in base alle opzioni offerte nel popup.

PowerAutomate Scheduling 03.png

Il seguente esempio interessante, si imposta una schedulazione custom settimanale, ad ore e minuti prestabiliti evitando sabato e domenica e le ore non lavorative.

PowerAutomate Scheduling 04.png

Scrivere condizioni di Triggers

E' possibile definire delle condizioni di trigger usando il linguaggio Workflow Definition Language (WDL). Vedere guida: citizendevelopmentacademy

Language

Il linguaggio "dovrebbe" essere Power Fx, MS overview.

Expressions

String Functions

Concatenazione di stringhe
Concat(text1,text2,...)
Es. concatenazione di due elementi di un vettore di stringhe separati da uno spazio vuoto (non importa se gli elementi del vettore sono nulli, non scatta errore)

Concat(item()?['Platform']?[0]?['Value'], ' ', item()?['Platform']?[1]?['Value'])

Es. concatenazione di due elementi di un vettore di stringhe separati da VIRGOLA ma solo se il secondo elemento esiste e non è nullo

Concat(item()?['Platform']?[0]?['Value']
	, if (empty(item()?['Platform']?[1]?['Value'])
		, ''
		, Concat(',', item()?['Platform']?[1]?['Value'])
		)
	)

Verifica se NULL o vuoto
empty(variabile)
, restituisce VERO se la variabile parametro è vuota

Controlli del flusso

If(condizione da verificare,variabile_caso_vero,variabile_caso_falso)
es.

If(variabile=1, 'Vero', 'Falso')

Mappa e Link


Power Automate | MS Power apps


Dizionario | JSON | JavaScript | SharePoint


Parole chiave:

Author