Playground
O AMPScript Way tem um playground interativo que permite escrever e executar código AMPscript diretamente no navegador - sem precisar de acesso ao Marketing Cloud, sem configurar nada, sem logar em lugar nenhum.
É útil para aprender a linguagem, testar uma lógica antes de colocar em produção, reproduzir um problema ou simplesmente experimentar uma função que você nunca usou.
O que o playground oferece
Editor com syntax highlighting
O editor é baseado no Monaco - o mesmo que alimenta o VS Code. Ele reconhece a sintaxe do AMPscript e destaca visualmente cada elemento:
- Delimitadores
%%[,]%%,%%=,=%%e%%variavel%% - Palavras-chave:
VAR,SET,IF,ELSEIF,ELSE,ENDIF,FOR,TO,DO,NEXT - Funções, variáveis, strings, números e comentários
O tema acompanha automaticamente a preferência de claro/escuro do site.
Autocomplete
Ao digitar, o editor sugere funções e palavras-chave disponíveis. As sugestões incluem todas as funções suportadas pelo playground e inserem automaticamente os parênteses de abertura para facilitar a escrita.
Painel de Subscriber
Simula os atributos de um subscriber, que no Marketing Cloud seriam os campos da All Subscribers ou de uma Data Extension usada como audiência.
Você define pares de chave e valor - por exemplo, Nome = João, Email = joao@empresa.com.br - e esses valores ficam acessíveis no código via AttributeValue() ou diretamente como personalization strings (%%Nome%%).
Painel de Data Extensions
Simula Data Extensions completas com colunas e linhas. Você cria uma DE, define os campos e insere quantas linhas precisar. O código pode então usar Lookup(), LookupRows(), InsertDE(), UpsertDE() e todas as demais funções de DE normalmente, como se estivesse dentro do SFMC.
As alterações feitas pelo código (inserts, updates, deletes) refletem em tempo real no painel - o que torna fácil depurar lógicas que manipulam dados.
Painel de Output
Exibe o resultado da execução do código. Tudo que o script produz - tanto o texto renderizado quanto os valores de Output() e OutputLine() - aparece aqui.
Funções suportadas
O playground implementa as seguintes funções em TypeScript puro, sem dependência de nenhum serviço externo.
String
Char · Concat · Domain · Format · FormatCurrency · FormatNumber · IndexOf · Length · Lowercase · ProperCase · RegExMatch · Replace · ReplaceList · StringToHex · Substring · Trim · Uppercase · URLEncode
Matemática
Add · Divide · Mod · Multiply · Random · Subtract
Data
DateAdd · DateDiff · DateParse · DatePart · FormatDate · GetSendTime · LocalDateToSystemDate · Now · StringToDate · SystemDateToLocalDate
Utilitárias
AttributeValue · Empty · GUID · IIF · IsEmailAddress · IsNull · IsNullDefault · IsPhoneNumber · Output · OutputLine · RaiseError · TreatAsContent · V
Criptografia
Base64Decode · Base64Encode · DecryptSymmetric · EncryptSymmetric · MD5 · SHA1 · SHA256 · SHA512
Conteúdo
BuildRowsetFromJson · BuildRowsetFromString · BuildRowsetFromXml
HTTP
IsChtmlBrowser · WrapLongURL
Sites
QueryParameter · RequestParameter
Data Extension
DataExtensionRowCount · DeleteData · DeleteDE · Field · InsertData · InsertDE · Lookup · LookupOrderedRows · LookupOrderedRowsCS · LookupRows · LookupRowsCS · Row · RowCount · UpdateData · UpdateDE · UpsertData · UpsertDE
Avisos importantes
O playground não substitui o SFMC
O objetivo do playground é educacional e de prototipagem. O comportamento simulado é uma aproximação fiel, mas há diferenças inevitáveis em relação ao ambiente real do Marketing Cloud. Sempre valide seu código no SFMC antes de usar em produção.
Data Extensions são simuladas em memória
O playground não tem acesso a nenhuma DE real da sua conta SFMC. Apesar disso, os códigos são salvos no armazenamento local do seu navegador. Então, quando você sair e voltar depois, o código está salvo.
Funções de data e fuso horário
Now()eGetSendTime()retornam a hora atual do navegador em UTC. No SFMC,GetSendTime()retorna o horário configurado no agendamento do job de envio, que pode ser diferente. As funçõesLocalDateToSystemDate()eSystemDateToLocalDate()não aplicam conversão de fuso no playground - retornam a data como está.
Criptografia
SHA1,SHA256eSHA512são implementados em JavaScript puro e produzem hashes idênticos aos do SFMC para qualquer entrada.
EncryptSymmetriceDecryptSymmetricusam AES-128-CBC. A chave e o IV passados como string são truncados ou completados com zeros até 16 bytes. O comportamento pode diferir do SFMC se você usar chaves gerenciadas pela plataforma (Key Management) ou configurações de padding diferentes.
MD5,Base64EncodeeBase64Decodetêm comportamento idêntico ao SFMC.
Funções HTTP não são suportadas
HTTPGet,HTTPPost,HTTPPost2eHTTPPostWithRetrynão estão disponíveis no playground. Requisições HTTP externas não são possíveis no contexto do navegador sem um servidor intermediário.
IsChtmlBrowser()sempre retornafalse.WrapLongURL()retorna a URL sem modificação - o comportamento real depende do sistema de rastreamento do SFMC.
Funções de QueryParameter e RequestParameter
QueryParameter()eRequestParameter()lêem os parâmetros da URL atual do navegador. Para testá-las, adicione parâmetros na URL do playground - por exemplo:/playground?cidade=Recife&segmento=premium- e o código conseguirá lê-los normalmente.
Funções que dependem do ambiente SFMC
As seguintes categorias de funções existem na linguagem mas não são suportadas no playground porque dependem de serviços ou dados que só existem dentro do Marketing Cloud:
- Content Builder:
ContentBlockByKey,ContentBlockById,ContentArea,Image,AttachFilee similares - CloudPages:
CloudPagesURL,MicrositeURL,Redirecte similares - Autenticação: todas as funções
Authenticated* - Salesforce CRM:
CreateSalesforceObject,RetrieveSalesforceObjectse similares - Microsoft Dynamics: todas as funções
*Mscrm* - API SOAP:
InvokeCreate,InvokeRetrieve,CreateObjecte similares - SMS / MobileConnect:
CreateSmsConversation,EndSmsConversatione similares - Social:
GetPublishedSocialContent,GetSocialPublishURLe similares - Contatos:
UpsertContact - DE avançado:
ClaimRow,ClaimRowValue,ExecuteFilter,ExecuteFilterOrderedRows - JWT:
GetJwt,GetJwtByKeyName
Tentar usar uma dessas funções no playground resulta em erro de função desconhecida.