Power plateform

Include PowerApps, Power automate flow

PowerApps Functions

On 30/09/2022

PowerApps functions

Parse text to number

    Filter('Workflow Tasks'; ID = Value(txtId.Text))

Add datas (listItem)

    Patch(NewVoie;Defaults(NewVoie);{Num_x00e9_rovoie:"0"&LookUp(NewVoie;ID=1).Num_x00e9_rovoie}))

Update context, and forms datas

    SubmitForm(FormBeneficiaires);;ResetForm(FormBeneficiaires);; NewForm(FormBeneficiaires);; UpdateContext({showPopup:false});

        If(IsBlankOrError(SubmitForm(Form1)), Set(saveStatus, "An error occured" & Form1.Error), Set(saveStatus, "Operation succeded"))

Navigate to another form

    Navigate(Page_infos_enregistrements)

Get query string parameter and set a variable

    Set(InitiativeId; Param("ID"))

Getquerystringparam

 

Get a field from your datasource by ID

    First(Filter(Initiatives; ID=1)).Nom

 

And Or Not

Or(And(Radio1.Selected.Value=4; !IsBlank(txtComment.Text));Radio1.Selected.Value<4)

 

Update Lookup Field

Patch(
        ResultatAnalyses;
        First(//here item to update
            Filter(
                ResultatAnalyses;
                Affaire.Id = currentAffaire.ID And Analyse.Id = ThisItem.ID
            )
        );
        {
            Title: "notused";
            Commentaires: txtGalComment.Text;
            Gravite: Rating1.Value;
            Affaire: {//lookup field name
                Id: currentAffaire.ID;//id of lookup
                Value: LookUp(
                    Affaires;//list who contains lookup value
                    ID = currentAffaire.ID;//id of lookup
                    currentAffaire.Title//title of lookup value
                )
            }
        }
    )

Patch Choice

TypeIntervention: {Value: dtvTypeIntervention.Selected.Value}

Execute automate with json

'My workflow'.Run(
	JSON(
		{
			SolutionId: selectedSolution.ID,
			ImageContent: UploadedImage14.Image
		},
		JSONFormat.IncludeBinaryData
	)
);

Reg ex to get cleaned string

Clear(AttachmentsCollection);
ForAll(
      RenameColumns(DataCardValue91.Attachments, "Name", "Name1"),
      Collect(
             AttachmentsCollection,
             Name1
      )
);Set(Title1, First(AttachmentsCollection).Value);Set(FileName1, Concat( Split(First(AttachmentsCollection).Value, "" ), If( IsMatch(Result, "([^A-Za-z0-9\.\-])" ), "",Result ) ))

Save Form

SubmitForm(Form1);;If(!IsBlankOrError( Form1.Error); Notify("Une erreur est survenue lors de la sauvegarde " & Form1.Error; NotificationType.Error);Notify("La savegarde a réussi";NotificationType.Information);;Set(currentElement; Form1.LastSubmit))

 

Sort columns


Set(Month, Distinct(SortByColumns(CurrentMonthMails, "Year", Ascending, "Month", Ascending), Month))

Set date


Set(StartDate, DateAdd(DateTimeValue( Day(Today) &"/"& Month(Today) &"/"& Year(Today) &" 00:00:00"), -30));

Sum


Sum(Filter(CurrentMonthMails, Month = ThisItem.Result ), uniqMails)

 

Power Apps Send JSON to Power Automate

On 31/10/2024

Use JSON to set your object or array

And in your power automate use ParseJSON

Powerappsjson

Power Automate Add Field To ContentType

On 03/10/2024

Power Automate Add Field To ContentType (reference Microsoft)

Note the following restrictions on adding a field (column) to a content type using the REST service:

  • Site Columns cannot be added to a content type using the REST service.
  • You can add a field to a site content type only if the field already exists on the parent content type.
  • You can add a field to a content type associated with a list only if the field already exists on the list. To add a completely new field to a list content type, you have to first add it to the list and then add it to the content type in a separate call to the REST service.

Addfieldtocontenttype

Invalid - Must not be used. The value = 0.

Integer - Specifies that the field contains an integer value. The value = 1.

Text - Specifies that the field contains a single line of text. The value = 2.

Note - Specifies that the field contains multiple lines of text. The value = 3.

DateTime - Specifies that the field contains a date and time value or a date-only value. The value = 4.

Counter - Specifies that the field contains a monotonically increasing integer. The value = 5.

Choice - Specifies that the field contains a single value from a set of specified values. The value = 6.

Lookup - Specifies that the field is a lookup field. The value = 7.

Boolean - Specifies that the field contains a Boolean value. The value = 8.

Number - Specifies that the field contains a floating-point number value. The value = 9.

Currency - Specifies that the field contains a currency value. The value = 10.

URL - Specifies that the field contains a URI and an optional description of the URI. The value = 11.

Computed - Specifies that the field is a computed field. The value = 12.

Threading - Specifies that the field indicates the thread for a discussion item in a threaded view of a discussion board. The value = 13.

Guid - Specifies that the field contains a GUID value. The value = 14.

MultiChoice - Specifies that the field contains one or more values from a set of specified values. The value = 15.

GridChoice - Specifies that the field contains rating scale values for a survey list. The value = 16.

Calculated - Specifies that the field is a calculated field. The value = 17.

File - Specifies that the field contains the leaf name of a document as a value. The value = 18.

Attachments - Specifies that the field indicates whether the list item has attachments. The value = 19.

User - Specifies that the field contains one or more users and groups as values. The value = 20.

Recurrence - Specifies that the field indicates whether a meeting in a calendar list recurs. The value = 21.

CrossProjectLink - Specifies that the field contains a link between projects in a Meeting Workspace site. The value = 22.

ModStat - Specifies that the field indicates moderation status. The value = 23.

Error - Specifies that the type of the field was set to an invalid value. The value = 24.

ContentTypeId - Specifies that the field contains a content type identifier as a value. The value = 25.

PageSeparator - Specifies that the field separates questions in a survey list onto multiple pages. The value = 26.

ThreadIndex - Specifies that the field indicates the position of a discussion item in a threaded view of a discussion board. The value = 27.

WorkflowStatus - Specifies that the field indicates the status of a workflow instance on a list item. The value = 28.

AllDayEvent - Specifies that the field indicates whether a meeting in a calendar list is an all-day event. The value = 29.

WorkflowEventType - Specifies that the field contains the most recent event in a workflow instance. The value = 30.

MaxItems - Must not be used. The value = 31.

Power Apps Limit 500 WorkArround

On 25/09/2024

Power Apps Limit WorkArround 500

The column Id hit type is counter, we cannot use it to filter if we have more than 500 items with "<" ou ">"

But with created we can use delegation with > and <

You can build a pagination with date filtering

Powerappslimit500listApp loading

Settingsbutton next

Powerappsnext 1button previous

Powerappslimit back

Buttons

 

Restreindre les accès dans PowerApps

On 06/09/2024

Restreindre l'accès à certaines sections d'une application PowerApps en fonction des groupes SharePoint permet de s'assurer que seules les personnes ayant les bonnes autorisations peuvent accéder à certaines fonctionnalités ou à des informations sensibles. PowerApps permet d'utiliser des groupes SharePoint pour personnaliser l'interface utilisateur en fonction des autorisations des utilisateurs.

Voici les étapes pour configurer ces restrictions en fonction des groupes SharePoint :

 1. Utiliser une connexion à SharePoint pour vérifier les groupes
Tout d'abord, vous devez ajouter la liste des groupes SharePoint à PowerApps. Vous pouvez utiliser la source de données SharePoint pour récupérer les groupes auxquels un utilisateur appartient.

# Étapes :
- Créez une liste SharePoint qui contient les informations des groupes SharePoint, ou utilisez la connexion directe à votre site SharePoint.
- Ajoutez SharePoint en tant que source de données dans PowerApps :
  1. Dans PowerApps Studio, allez dans l'onglet Data.
  2. Cliquez sur Add data.
  3. Sélectionnez SharePoint et connectez-vous à votre site.
  4. Choisissez une liste ou connectez-vous directement à votre site.

 2. Utiliser la fonction `User()` pour identifier l'utilisateur courant
PowerApps fournit la fonction `User()` qui permet d'identifier l'utilisateur actuellement connecté et obtenir son adresse e-mail.

User().Email


 3. Récupérer les groupes SharePoint d'un utilisateur
Pour vérifier si un utilisateur fait partie d'un groupe spécifique, vous pouvez utiliser la liste des groupes ou une connexion à SharePoint pour filtrer les groupes auxquels il appartient.

# Exemple de méthode :
Si vous avez une liste SharePoint appelée GroupesSharePoint avec une colonne `Title` (nom du groupe) et une colonne `Email` (adresse e-mail des membres du groupe), vous pouvez utiliser cette liste pour vérifier l'appartenance à un groupe.


If(
    CountRows(
        Filter(GroupesSharePoint, Email = User().Email && Title = "NomDuGroupe")
    ) > 0,
    true,
    false
)

 


Cela retourne `true` si l'utilisateur fait partie du groupe "NomDuGroupe", et `false` sinon.

 4. Utiliser des conditions pour afficher/masquer des sections
Une fois que vous avez vérifié si un utilisateur appartient à un groupe spécifique, vous pouvez utiliser cette logique pour afficher ou masquer certaines sections ou contrôles de l'application PowerApps.

# Exemple :
Supposons que vous ayez une section de formulaire (par exemple un conteneur, une galerie, ou un bouton) que vous souhaitez rendre visible uniquement pour les membres du groupe "Administrateurs".

- Sélectionnez le contrôle que vous souhaitez masquer.
- Allez dans la propriété Visible du contrôle.
- Utilisez une expression conditionnelle basée sur l'appartenance au groupe SharePoint.


If(


    CountRows(
        Filter(GroupesSharePoint, Email = User().Email && Title = "Administrateurs")
    ) > 0,
    true,
    false
)

 


Cela rend le contrôle visible uniquement si l'utilisateur fait partie du groupe Administrateurs.

 5. Restreindre l'accès à plusieurs groupes
Si vous souhaitez accorder l'accès à plusieurs groupes, vous pouvez ajuster la logique pour vérifier si l'utilisateur appartient à l'un des groupes autorisés.

# Exemple :


If(


    CountRows(
        Filter(GroupesSharePoint, Email = User().Email && (Title = "Administrateurs" || Title = "Managers"))
    ) > 0,
    true,
    false
)

 


Ici, l'utilisateur peut voir la section s'il fait partie soit du groupe Administrateurs soit du groupe Managers.

 6. Alternatives sans liste SharePoint - Utiliser des groupes Office 365
Si vous ne voulez pas créer une liste SharePoint pour gérer les autorisations, vous pouvez également utiliser des groupes Office 365 auxquels les utilisateurs sont déjà associés. PowerApps peut récupérer les informations sur les groupes Office 365 à l’aide du connecteur Office 365 Groups.

# Étapes :
1. Ajoutez la source de données Office 365 Groups à PowerApps.
2. Utilisez la fonction `Office365Groups.ListGroupMemberships()` pour obtenir les groupes dont l'utilisateur fait partie.

# Exemple :

If(


    CountRows(
        Filter(Office365Groups.ListGroupMemberships().value, displayName = "NomDuGroupe" && userPrincipalName = User().Email)
    ) > 0,
    true,
    false
)

 


 7. Masquer des Éléments de Menu ou des Boutons
Vous pouvez également utiliser cette logique pour masquer des boutons d'action ou des éléments de menu spécifiques pour des groupes d’utilisateurs.

# Exemple pour un bouton :

If(


    CountRows(
        Filter(GroupesSharePoint, Email = User().Email && Title = "Editeurs")
    ) > 0,
    true,
    false
)

 


Cela masque ou affiche le bouton uniquement si l'utilisateur appartient au groupe Editeurs.

 Conclusion

En utilisant les listes SharePoint ou les groupes Office 365, vous pouvez facilement restreindre l'accès à certaines sections d'une application PowerApps en fonction des autorisations de l'utilisateur. Cela permet d'assurer un contrôle d'accès flexible et sécurisé sans dupliquer les informations d'authentification. En configurant les sections de votre application avec des contrôles conditionnels, vous pouvez personnaliser l'expérience utilisateur en fonction des rôles et des groupes définis dans SharePoint.

Optimisation de la connexion à des listes SharePoint de grande taille dans PowerApps

On 06/09/2024

L'optimisation de la connexion à des listes SharePoint de grande taille dans PowerApps est cruciale pour assurer des performances fluides, surtout lorsque vous travaillez avec un grand volume de données. Voici quelques bonnes pratiques et techniques pour optimiser cette connexion.

 1. Limiter les enregistrements récupérés avec des filtres

Lorsque vous travaillez avec des listes SharePoint volumineuses (plus de 5000 éléments), il est essentiel de limiter le nombre d’enregistrements récupérés à l’aide de filtres.

- Utilisez des filtres spécifiques dans votre source de données pour limiter le nombre d'enregistrements. PowerApps applique une limite de 500 enregistrements par défaut (modifiable jusqu’à 2000), donc réduire la quantité de données à charger via des filtres est un bon point de départ.
  
Exemple : Filtrer les éléments à récupérer en fonction d'une condition.

powerapps


Filter(SharePointList, Status = "Active")


 2. Utiliser les fonctions déléguées

PowerApps utilise un concept appelé délégation pour gérer les grandes quantités de données en SharePoint. Lorsqu'une opération est déléguée, elle est effectuée côté serveur, ce qui permet de récupérer uniquement les données pertinentes.

- Utiliser des fonctions déléguées comme `Filter()`, `Sort()`, `LookUp()` qui sont prises en charge par SharePoint.
  
Exemple : Déléguer une opération de filtrage.

 


Filter(SharePointList, Created > Today() - 30)

Cela récupérera uniquement les éléments créés au cours des 30 derniers jours, tout en déléguant l'opération au serveur SharePoint.

 

 3. Éviter les fonctions non déléguées

Certaines fonctions dans PowerApps ne prennent pas en charge la délégation, ce qui signifie que l'application devra d'abord récupérer toutes les données côté client avant de pouvoir traiter la requête, ce qui ralentit considérablement l'application.

- Exemple de fonctions non déléguées : `Len()`, `StartsWith()`, `Mid()`, etc. Évitez-les dans vos requêtes si vous travaillez avec des listes de grande taille.

Mauvais exemple (non délégué) :


Filter(SharePointList, Len(Title) > 10)


 4. Limiter les colonnes récupérées (fonction `ShowColumns`)

Si vous n'avez pas besoin de toutes les colonnes de la liste SharePoint, utilisez la fonction `ShowColumns()` pour ne récupérer que les colonnes nécessaires, réduisant ainsi la charge sur le réseau et la performance.

Exemple :


ShowColumns(SharePointList, "Title", "Status", "DueDate")


Cela récupère uniquement les colonnes `Title`, `Status`, et `DueDate` de votre liste SharePoint.

 5. Pagination pour charger les données par lot

Pour des listes de très grande taille, vous pouvez implémenter une pagination dans PowerApps, en chargeant les données par lots pour éviter de récupérer un trop grand volume de données d'un coup.

Exemple de pagination (en fonction d'un ID de liste) :


ClearCollect(colPagedItems, Filter(SharePointList, ID > Last(colPagedItems).ID))

Cela permet de récupérer les éléments par lots en fonction de l'ID et d'ajouter chaque lot aux données précédentes.

 6. Utiliser des index de colonnes SharePoint

SharePoint permet d’indexer les colonnes dans les listes pour améliorer la performance des requêtes. Si vous effectuez des filtres sur une colonne particulière dans PowerApps, assurez-vous que cette colonne est indexée dans SharePoint.

- Exemple de colonnes à indexer : Colonnes souvent filtrées comme `Created`, `Modified`, ou des colonnes personnalisées.

Pour ajouter un index, dans la liste SharePoint :
- Allez dans Paramètres de la liste > Colonnes indexées > Créer un index.

 7. Utiliser des collections temporaires

Lorsque vous travaillez avec des données statiques ou peu modifiées, vous pouvez stocker temporairement les données SharePoint dans des collections PowerApps pour éviter de faire plusieurs appels réseau.

Exemple :


ClearCollect(TempCollection, SharePointList)


Une fois les données chargées dans la collection `TempCollection`, vous pouvez manipuler ces données localement sans avoir à refaire des requêtes vers SharePoint.

 8. Éviter les contrôles de galerie chargés de manière excessive

Lorsque vous utilisez des galeries pour afficher des données provenant de SharePoint, essayez de limiter le nombre d’enregistrements chargés simultanément. Trop de données affichées à la fois peut entraîner des ralentissements, surtout si chaque élément de la galerie a plusieurs contrôles.

- Conseil : Affichez une quantité limitée d’éléments et ajoutez une pagination ou un bouton "Charger plus".

 9. Désactiver l’actualisation automatique

Par défaut, certaines actions ou modifications dans PowerApps provoquent une actualisation automatique des données. Cela peut entraîner des ralentissements si de grandes quantités de données sont régulièrement rafraîchies.

- Conseil : Désactivez l’actualisation automatique pour les sources de données non essentielles et effectuez des rafraîchissements manuels uniquement lorsque nécessaire.


Refresh(SharePointList)


 10. Utiliser Power Automate pour des tâches complexes

Si vous avez besoin de traiter de grandes quantités de données ou d’exécuter des tâches complexes, envisagez d’utiliser Power Automate (anciennement Microsoft Flow) pour traiter ces opérations en arrière-plan, puis renvoyer les résultats dans PowerApps.

Exemple : Utilisez Power Automate pour rechercher et filtrer des éléments dans une liste SharePoint volumineuse, puis retournez uniquement les données filtrées à PowerApps.

 

 Conclusion

En suivant ces bonnes pratiques, vous pouvez optimiser la connexion de vos applications PowerApps à des listes SharePoint de grande taille. L'utilisation de filtres délégués, la limitation des colonnes récupérées, l’indexation des colonnes, et la pagination vous permettront de maintenir des performances optimales tout en améliorant l'expérience utilisateur.

Power Automate Update ListItem ContentType

On 06/05/2024

Power Automate Update ListItem ContentType

With "Send an HTTP request to SharePoint"

Headers : 


{
  "Accept": "application/json; odata=verbose",
  "content-type": "application/json; odata=verbose",
  "X-HTTP-Method": "MERGE",
  "If-Match": "*"
}
Updateitemct

Power Automate Get DriveId For Excel "Get tables"

On 16/04/2024

Here i will show you how to get an Excel File from SharePoint dynamicaly

 

01 flowgetdriveid

/_api/v2.1/drives?$select=id,webUrl&$filter=webUrl eq 'https://myTest/sites/Site1/doclib1'

body('Send_an_HTTP_request_to_SharePoint')['value'][0]['id']

02 flowgettable

Power Automate We are unable to find the site address. Please try selecting a site address from the dropdown.

On 24/10/2023

Power Automate, cannot access to my site

We are unable to find the site address. Please try selecting a site address from the dropdown.

If you don't found your site in dropDown list or your site cannot be used

you can add you url manually in custom value, then you cannot select a list, but you can set id id of the list and it will work

01 selectyoursite

 

 

 

get the id in your list when you navigate in your list setting

SKIP %7B and %7D

02 getidoflist

 

03 setlistid 1

 

 

 

 

 

 

 

 

Save and it should be ok

The list ID should be replaced by the correct list title

04 listsetted 1

Prevent Recursive Update

On 24/10/2023

How to prevent recursives update on trigger "When an item is created or modified"

 

add this in trigger settings, set your email (a service account) thaht will not launch the trigger

@not(equals(toLower(triggerOutputs()?['body/Author/Email']), 'service_account@test1.com'))

 

so with this settings you can perform an update in your flow without recursive trigger

 

Preventrecursiveupdate

PowerAutomate history Unexpected Error Unable To Fetch

On 21/04/2023

PowerAutomate history - Unexpected error. Unable to fetch

WfhistoryerrorI my case to solve this issue, i press "ctrl + R" then "ctrl + F5", then i should wait a few minutes before opening les boxes and it's ok

Wfhistoryerror2If this error persists, you can download, full history in a csv file that you can analize, yes you need to rean JSON code and Sharepoint http requests

in your flow error message copy le run ID to seek it in your csv file in url

https://make.powerautomate.com/environments/Default-d035406542/solutions/b03b5e55-c8d9-ed11-a7c7-000d3a2726a5/flows/21fb6dc1-0412-3540684-f0a6881c120f/runs/08585210145218379217946437495CU195Csvflow

Power Automate add line to Excel

On 29/03/2023

Copy an Excel file from a template with an Sharepoint Http request

Createfolder 1

 


/_api/web/getFileByServerRelativeUrl('/sites/test@{variables('TemplateFileName')}')/copyTo(strNewUrl='/sites/test@{variables('ExportFolder')}/@{variables('ExportFileName')}',bOverWrite=true)

 

Header

 


{
  "Accept": "application/json; odata=verbose",
  "content-type": "application/json; odata=verbose",
  "X-HTTP-Method": "PATCH",
  "If-Match": "*"
}

Create An Excel Table

Excel createtable

Add your Datas in an Excel line

Excel addlineLine : 

 


@{items('Appliquer_à_chacun_2')}

 

 

 

 

 

PowerAutomate Add Folder

On 10/02/2023

Powerautomate get folder by url 


/_api/web/GetFolderByServerRelativeUrl('@{variables('WebserverRelativeUrl')}/@{variables('DoclibUrl')}/Fiche_@{variables('FicheId')}')
GetfolderVerify status (exists = 200, does not exists = 404)

@{outputs('HttpGetFolder')['statusCode']}


{
  "Accept": "application/json; odata=verbose",
  "content-type": "application/json; odata=verbose"  "If-Match": "*"
}

Create folder


/_api/web/folders/add('@{variables('DoclibUrl')}/Fiche_@{variables('FicheId')}')

Createfolder

3 analysejson

PowerAutomate Try Catch

On 06/12/2022

Try catch in power automate

Try

 


2 jsonerror

 

    
        {
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "name": {
                "type": "string"
            },
            "startTime": {
                "type": "string"
            },
            "endTime": {
                "type": "string"
            },
            "trackingId": {
                "type": "string"
            },
            "clientTrackingId": {
                "type": "string"
            },
            "clientKeywords": {
                "type": "array",
                "items": {
                    "type": "string"
                }
            },
            "code": {
                "type": "string"
            },
            "status": {
                "type": "string"
            },
            "error": {
                "type": "object",
                "properties": {
                    "code": {
                        "type": "string"
                    },
                    "message": {
                        "type": "string"
                    }
                }
            }
        },
        "required": [
            "name",
            "startTime",
            "endTime",
            "trackingId",
            "clientTrackingId",
            "clientKeywords",
            "code",
            "status",
            "error"
        ]
    }
}
    

 

3 analysejson

 

    
        {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "type": {
                    "type": "string"
                },
                "location": {
                    "type": "string"
                },
                "tags": {
                    "type": "object",
                    "properties": {
                        "flowDisplayName": {
                            "type": "string"
                        },
                        "environmentName": {
                            "type": "string"
                        },
                        "logicAppName": {
                            "type": "string"
                        },
                        "environmentWorkflowId": {
                            "type": "string"
                        },
                        "xrmWorkflowId": {
                            "type": "string"
                        },
                        "environmentFlowSuspensionReason": {
                            "type": "string"
                        },
                        "sharingType": {
                            "type": "string"
                        }
                    }
                },
                "run": {
                    "type": "object",
                    "properties": {
                        "id": {
                            "type": "string"
                        },
                        "name": {
                            "type": "string"
                        },
                        "type": {
                            "type": "string"
                        }
                    }
                }
            }
        }

    
        concat('https://emea.flow.microsoft.com/manage/environments/', body('Analyser_JSON')?['tags']?['environmentName'], '/flows/', body('Analyser_JSON')?['name'], '/runs/', body('Analyser_JSON')?['run']?['name'])           
    

 

4 linkhisto


 

    
        a href="@{outputs('LinkToWfHisto')}​​​​​">​​​​​@{workflow()?['tags']?['flowDisplayName']} a
    

 


 

5 aref

PowerAutomate Date Format

On 30/09/2022

formatDateTime('2009-06-15T13:45:30', 'M/dd/yyyy h:mm tt')  6/15/2009 1:45 PM

formatDateTime('2009-06-15T13:45:30', 'dd/MM/yyyy') 15/06/2009

formatDateTime('2009-06-15T13:45:30', 'd/M/yyyy') 15/6/2009

formatDateTime('2009-12-15T13:45:30', 'dddd/MMMM/yyyy') Tuesday/December/2009

formatDateTime('2009-12-15T13:45:30', 'ddd/MMM/yyyy') Tue/Dec/2009

PowerAutomate Functions

On 21/04/2022

Concat

concat(outputs('Compose'),'test')

 

Get user mail in REST results

items('Appliquer_à_chacun')?['MyUser']?['EMail']

 

Add 10 Days

addDays(utcNow(),10)

 

Get JSON data

 

body('parameterJSON')?['Relaunch1nbDays']
body('myGet')?['value']

 

 

Get variable value

variables('RelaunchDate1')

 

Check data is empty

if(empty(variables('userMail')), null, variables('userMail'))

 

Date formatting

formatDateTime(your-value, 'dd/MM/yyyy hh:mm tt')

image base64 to <img>

 


Get_file_content_using_path_2')['$content']  //the $ is important
<img class="logo" src="data:image/jpeg;base64, @{body('Get_file_content_using_path_2')['$content']}" alt="My Image" />

 

Power Automate Check User Exists

On 24/01/2022

Checkuser1

Checkuser2

 


/_api/web/ensureuser
content-type application/json; odata=verbose

{'logonName': '@{variables('userMailToCheck')}'}
@{outputs('Send_an_HTTP_request_to_SharePoint')['statusCode']}


PowerAutomate Add User To Group

On 19/09/2021

Powerautomate add user to sharepoint group

Ajouter un utilisateur dans un groupe sharepoint en REST avec powerautomate

{"__metadata":{"type":"SP.User"},"LoginName":"i:0#.f|membership|@{variables('emailToAdd')}"}
{
  "siteUrl": "https://vvvvvvvvvvvvvvv.com",
  "Accept": "Accept",
  "ApplicationJson": "application/json; odata=verbose",
  "ContentType": "content-type"
}

 

Getassociatedmembers

 

Addusertogroup

 

PowerApps Build String To Link

On 31/05/2021

Powerapps build your string to creae an html link

 


<div style="background-color:#000000;width:100%;"><code><a href="https://mySP.sharepoint.com/sites/DfSite/Lists/Initiatives/DispForm.aspx?ID=&quot;; InitiativeId; &quot;" style="color:#FFFFFF;height:100px">&quot;;SelectedInitiative.Titre;&quot;</a></code></div>
 

 

Buildlink

Powerautomate Caml Query

On 27/05/2021

Powerautomate Caml Query

Camlquery

Powerautomate Add Comment To ListItem

On 27/05/2021

Add comment to ListItem with powerautomate (http Sharepoint request)

Addcommentonitem


{
  "Accept": "application/json; odata=verbose",
  "content-type": "application/json; odata=verbose"
}

PowerAutomate Update ListItem HTTP REST

On 27/05/2021

Update a list item with http request with powerautomate

Updateitem 1

 

 


{
  "Accept": "application/json; odata=verbose",
  "content-type": "application/json; odata=verbose",
  "X-HTTP-Method": "MERGE",
  "If-Match": "*"
}


 

 

Power Automate Sharepoint Actions List

On 31/03/2021

Power Automate Sharepoint Actions List

PoactionsPoactions2

Powerautomate Extract Data From Json Array

On 31/03/2021

Powerautomate Extract Data From Json Array

 


{
	"fieldsMapping":[
		{
			"sourceFieldName": "Title2",
			"sourceFieldTypeAsString": "Text",
			"targetFieldName": "Title",
			"targetFieldTypeAsString": "Text"
		},
		 {
		  "sourceFieldName": "Title",
		  "sourceFieldTypeAsString": "Text",
		  "targetFieldName": "OtherTexteField",
		  "targetFieldTypeAsString": "Text"
		}
	]
}

Currentdata

items('Appliquer_à_chacun')?['sourceFieldName']

this command above will put sourceFieldName value in CurrentDataName variable

Datafromjsonarray

this command above will put sourceFieldName value in CurrentDataName variable

PowerAutomate Goodies

On 31/03/2021

Power Automate goodies

 

Add a cont JSON to store urls and lists names for example

 


{
	"sourceUrl": "https://mySite/sites/DevSpFX/LRemy",
	"sourceListeName": "listeSource",
	"sourceListItemEntityTypeReq":"/_api/web/lists/getbytitle('listeSource')/?$select=ListItemEntityTypeFullName",
	"sourceListItemEntityTypeFullName":"null",
	"sourceListQuery":"/_api/Web/Lists/getbytitle('listeSource')/items?select=Title,myUser1,myChoice1,Title2",
	"targetUrl": "https://mySite/sites/DevSpFX/LRemy",
	"targetListItemEntityTypeReq":"/_api/web/lists/getbytitle('listTarget')/?$select=ListItemEntityTypeFullName",
	"targetListItemEntityTypeFullName":"null",
	"targetListeName": "listTarget",
	"targetListeRequest": "/_api/Web/Lists/getbytitle('listTarget')/items",
	"logListRequest": "/_api/Web/Lists/getbytitle('logs')/items",
	"fieldsMapping":[
		{
			"sourceFieldName": "Title2",
			"sourceFieldTypeAsString": "Text",
			"targetFieldName": "Title",
			"targetFieldTypeAsString": "Text"
		},
		 {
      "sourceFieldName": "Title",
      "sourceFieldTypeAsString": "Text",
      "targetFieldName": "OtherTexteField",
      "targetFieldTypeAsString": "Text"
    }
	]
}

Add a JSON analyser action (above json is juste an exemple)

Addjsonaction

 

Add your JSON in generate from sample, this will create an object that you can use later

Ehantillon 1

Then add your JSON datas (if you modify JSON structure, you must regenerate the sample)

Addcontentjson

Use you Const to get items

Addconstinaction

 

Power Automate Flow Functions

On 18/06/2020

Power plateform

Power automate flow

 

Functions

Check date is null

if(equals(triggerBody()?['myDate'], null),'[myDate is null]', formatDateTime(triggerBody()?['myDate'], 'dd/MM/yyyy'))

Power apps

Display view on query string value

If ( !IsBlank(Param("taskDisplay")) && Param("taskDisplay")="true"; Navigate(DevTasksView;ScreenTransition.Cover) )

set variable value (separator in english is , in french ;)

Set(CurrentToShow; "loppement") ;; Set(CurrentButton; "DEV")

 

Addind header like this


{
  "Accept": "application/json; odata=verbose",
  "content-type": "application/json; odata=verbose",
  "X-HTTP-Method": "MERGE",
  "If-Match": "*"
}