Introduction à AMPscript
L’AMPscript est un langage de script puissant dans Salesforce Marketing Cloud (SFMC), principalement utilisé pour personnaliser le contenu dans les e-mails, les pages de destination, les messages SMS et les CloudPages. Que vous souhaitiez récupérer des détails sur les abonnés, formater des dates ou effectuer des recherches de données avancées, AMPscript peut répondre à vos besoins.
Principaux avantages d’AMPscript :
- Personnalisation en temps réel : Utilisez les attributs des abonnés pour adapter les messages.
- Manipulation des données : Interrogez, formatez et affichez des données à partir des Data Extensions.
- Simplicité : L’AMPscript en ligne ou en bloc peut être facilement intégré dans les modèles d’e-mails.
Syntaxe et utilisation
AMPscript peut s’écrire de deux manières principales :
- AMPscript en ligne :
%%=Function(Param)=%%
- AMPscript en bloc :
%%[ /* Logique */ ]%%
Exemple en ligne
Hello %%=v(@firstName)=%%!
Exemple en bloc
%%[ SET @firstName = AttributeValue("FirstName") SET @greeting = Concat("Hello ", @firstName) ]%% %%=v(@greeting)=%%
AMPscript vs. SSJS
Bien que le Server-Side JavaScript (SSJS) dans SFMC offre des capacités similaires, l’AMPscript est souvent plus simple pour les recherches de données rapides et la personnalisation de contenu. Le SSJS peut être plus flexible pour une logique complexe, mais l’AMPscript a tendance à être plus rapide lors du rendu des e-mails.
Variables et types de données
Dans AMPscript, les variables sont généralement déclarées avec la fonction SET
.
Les types de données sont attribués implicitement en fonction des valeurs que vous leur passez.
Vous pouvez gérer les conversions avec des fonctions AMPscript spécifiques si nécessaire.
%%[ /* Variable chaîne de caractères */ SET @firstName = "John" /* Variable numérique */ SET @score = 100 /* Booléen */ SET @isActive = true /* La gestion des dates utilise souvent des fonctions comme FormatDate() ou Now() */ ]%%
Exemples de base
1. Personnalisation simple
%%[ SET @salutation = AttributeValue("Salutation") SET @lname = AttributeValue("LastName") ]%% Hello %%=v(@salutation)=%% %%=v(@lname)=%%,
2. Contenu conditionnel
%%[ IF @salutation == "Dr." THEN ]%%Nous avons des offres spéciales pour les professionnels de santé !
%%[ ELSE ]%%Découvrez nos dernières nouveautés.
%%[ ENDIF ]%%
3. Utilisation de variables de substitution
Idéal pour les espaces réservés cohérents dans votre e-mail ou CloudPage :
%%[ VAR @myCompanyName SET @myCompanyName = "Ma Super Entreprise" ]%%Bienvenue chez %%=v(@myCompanyName)=%% !
Fonctions de chaînes de caractères
AMPscript propose diverses fonctions de manipulation de chaînes pour formater, transformer et combiner des données textuelles. Voici les plus courantes.
Uppercase, Lowercase, ProperCase
%%[ SET @firstName = "john" SET @upperName = UPPERCASE(@firstName) /* résultat : "JOHN" */ SET @properName = PROPERCASE(@firstName) /* résultat : "John" */ SET @lastName = "DOE" SET @lowerName = LOWERCASE(@lastName) /* résultat : "doe" */ ]%%
Concat
%%[ SET @fullName = Concat(@firstName, " ", @lastName) /* Exemple de résultat : "john DOE" */ ]%%
Length & IndexOf
%%[ SET @exampleString = "Hello SFMC!" SET @len = Length(@exampleString) /* résultat : 11 */ SET @pos = IndexOf(@exampleString, "SFMC") /* résultat : 6 */ ]%%
Substring
%%[ /* syntaxe substring : Substring(@string, startIndex, length) */ SET @sub = Substring(@exampleString, 7, 4) /* résultat : "SFMC" */ ]%%
Replace
%%[ SET @modifiedString = Replace(@exampleString, "Hello", "Hi") /* résultat : "Hi SFMC!" */ ]%%
Fonctions de date et d'heure
AMPscript propose plusieurs fonctions pour gérer les opérations de date et d’heure, notamment le formatage, l’analyse et la modification. Voici quelques fonctions couramment utilisées avec des exemples.
Now
Retourne la date et l’heure actuelles dans le fuseau horaire par défaut de votre compte Salesforce Marketing Cloud.
%%[ SET @currentDateTime = Now() /* Exemple : 2025-01-17 10:30:00 */ ]%%
DateAdd
Ajoute ou soustrait un intervalle spécifique (jours, mois, années, heures) à une date.
%%[ /* DateAdd(date, nombre, unités) unités = "Y" (année), "M" (mois), "D" (jour), "H" (heure), etc. */ SET @oneWeekLater = DateAdd(Now(), 7, "D") ]%%
DateDiff
Retourne la différence entre deux dates selon une unité de temps spécifique (jours, mois, heures, etc.).
%%[ /* DateDiff(date1, date2, unités) */ SET @daysBetween = DateDiff(@somePastDate, Now(), "D") ]%%
DateParse
Convertit une représentation textuelle d’une date en un objet date AMPscript. Utile si votre date est stockée dans un format non standard.
%%[ /* DateParse("stringDate", "formatString") ex : "2025-01-15", "yyyy-MM-dd" */ SET @strDate = "15-01-2025" /* Exemple : format dd-MM-yyyy */ SET @parsedDate = DateParse(@strDate, "dd-MM-yyyy") ]%%
DatePart
Extrait une partie de la date/heure (année, mois, jour, heure, etc.) et retourne un entier.
%%[ /* DatePart(date, part) part = "Y" (année), "M" (mois), "D" (jour), "H" (heure), etc. */ SET @yearValue = DatePart(Now(), "Y") SET @monthValue = DatePart(Now(), "M") SET @dayValue = DatePart(Now(), "D") ]%%
FormatDate
Formate une valeur de date/heure selon un format de chaîne spécifié.
Les formats courants incluent MM/dd/yyyy
, yyyy-MM-dd
, dd/MM/yyyy
, etc.
%%[ /* FormatDate(dateTime, formatString, locale) */ SET @formattedDate = FormatDate(Now(), "MM/dd/yyyy", "en-US") ]%%
GetSendTime
Retourne l’heure à laquelle l’envoi a été effectué. Ceci est particulièrement utile pour la personnalisation des e-mails lorsque vous souhaitez vous référer à la date/heure d’envoi plutôt qu’à l’heure système actuelle.
%%[ SET @sendTime = GetSendTime() ]%%
LocalDateToSystemDate
Convertit une date/heure depuis l’heure locale du compte vers l’heure système (UTC).
%%[ /* LocalDateToSystemDate(localDate) */ SET @localDate = Now() /* supposons qu'il s'agisse de l'heure locale */ SET @systemDate = LocalDateToSystemDate(@localDate) ]%%
SystemDateToLocalDate
Convertit une date/heure en heure système (UTC) vers l’heure locale du compte.
%%[ /* SystemDateToLocalDate(systemDate) */ SET @utcDate = Now() /* si Now() est considéré comme l'heure système dans votre environnement SFMC */ SET @localDateTime = SystemDateToLocalDate(@utcDate) ]%%
Logique et conditionnels AMPscript
L’AMPscript propose des structures standard IF
, ELSE
, ELSEIF
et CASE
:
IF…ELSEIF…ELSE
%%[ IF @score > 90 THEN SET @grade = "A" ELSEIF @score > 80 THEN SET @grade = "B" ELSE SET @grade = "C or below" ENDIF ]%%
Instructions CASE
%%[ SET @memberLevel = "Gold" SET @memberDesc = CASE @memberLevel WHEN "Gold" THEN "Premium Tier" WHEN "Silver" THEN "Intermediate Tier" ELSE "Basic Tier" END ]%%
Fonctions de recherche dans les Data Extensions
Les fonctions Lookup de l’AMPscript vous permettent de récupérer des données depuis des Data Extensions sans avoir besoin d’une requête SQL complète. Elles sont essentielles pour la personnalisation en temps réel basée sur des données externes ou de profil.
Lookup
Récupère une seule valeur à partir d’une Data Extension en se basant sur une condition :
%%[ /* Lookup(NomDE, champ, champCondition, valeurCondition) */ SET @deFieldValue = Lookup("MyDataExtension", "FieldToRetrieve", "SubscriberKey", @subscriberKey) ]%%
LookupRows
Récupère plusieurs lignes en fonction d’une ou plusieurs conditions :
%%[ SET @rowset = LookupRows("MyDataExtension", "Email", @emailAddress) IF RowCount(@rowset) > 0 THEN SET @row = Row(@rowset,1) SET @firstName = Field(@row,"FirstName") ENDIF ]%%
LookupOrderedRows
Récupère plusieurs lignes avec un ordre de tri :
%%[ SET @orderedSet = LookupOrderedRows( "OrderHistoryDE", 5, /* nombre de lignes à renvoyer */ "PurchaseDate DESC", /* champ de tri et ordre */ "CustomerID", /* champ sur lequel faire la correspondance */ @customerId ) ]%%
Autres fonctions de recherche
LookupRowsCS
,LookupOrderedRowsCS
– versions sensibles à la casseLookupXML
– renvoie les données au format XML
Fonctions HTTP et API
L’AMPscript fournit des fonctions pour effectuer des appels externes via HTTP, bien qu’elles ne soient pas aussi avancées que le SSJS pour des intégrations complexes.
HTTPGet
Effectue une requête HTTP GET et stocke la réponse :
%%[ SET @response = HTTPGet("https://api.example.com/some-endpoint") ]%%
HTTPPost
Effectue une requête HTTP POST :
%%[ VAR @payload, @response SET @payload = '{"name":"John Doe","email":"john@example.com"}' SET @response = HTTPPost("https://api.example.com/create-user","application/json", @payload) ]%%
Gestion des erreurs
L’AMPscript est généralement exécuté au moment de l’envoi ou de la publication.
Si une erreur d’exécution se produit (par exemple, une fonction Lookup
qui échoue
ou une opération de date invalide), elle peut apparaître sous la forme d’un contenu vide
ou d’un contenu par défaut. Vous pouvez gérer les erreurs visibles par l’utilisateur
en vérifiant le nombre de lignes et en utilisant des conditionnels :
%%[ SET @rowset = LookupRows("SomeDE","CustomerID",@custID) IF RowCount(@rowset) == 0 THEN /* Fournir un contenu de secours ou un message */ SET @message = "Nous n'avons pas trouvé votre enregistrement." ELSE SET @row = Row(@rowset,1) SET @message = Concat("Hello ", Field(@row,"FirstName")) ENDIF ]%%
Meilleures pratiques
- Restez simple : Si votre logique devient trop complexe, envisagez de stocker les données pré-traitées dans des Data Extensions ou d’utiliser une automatisation.
- Utilisez l’AMPscript en bloc pour plus de clarté : Une logique complexe est plus facile à gérer dans un format bloc qu’en ligne.
- Validez vos expressions : Utilisez la fonctionnalité d’aperçu et de test SFMC pour déceler les erreurs avant l’envoi.
- Sécurisez les données sensibles : Limitez ou évitez l’affichage direct de données personnelles (PII) dans le code ; utilisez plutôt des espaces réservés spécifiques aux abonnés.
- Optimisez les recherches : Réduisez le nombre d’appels
Lookup
/LookupRows
, surtout si vous interrogez de grandes Data Extensions.