Como contornar o limite de campo único do Zapier na Transloadit
Recentemente, um cliente perguntou quantos campos podem ser passados usando nossa integração com o Zapier. Atualmente, permitimos passar apenas um campo para uma Assembly, o que pode ser limitante em alguns casos. Mas investigamos como contornar essa restrição e hoje vamos compartilhar nossa solução.

Para acompanhar, você vai precisar de:
- Um armazenamento no Dropbox
- Uma conta no Zapier
- Uma conta na Transloadit
Neste guia, vamos usar o armazenamento do Dropbox para importar e exportar arquivos. Mas oferecemos muitas outras opções de exportação que você pode usar no lugar dele.
Dropbox
Antes de começar, verifique se você tem uma conta do Dropbox configurada e clique aqui para configurar seu app do Dropbox.

As capturas de tela mostram as interfaces do Dropbox e do Zapier de 2021. No Dropbox, escolha Scoped access e conceda acesso apenas aos arquivos de que seu fluxo de trabalho precisa. A opção Full Dropbox mostrada na imagem é ampla; prefira App folder quando todas as entradas e saídas puderem ficar nessa pasta. Crie o app e ative apenas os escopos de leitura/gravação necessários nas configurações de permissões dele.

Acesse Settings e, na seção OAuth 2, gere seu token de acesso e anote o valor exibido. Um token gerado assim serve para um teste rápido, não para uma integração permanente sem supervisão. Para um Zap contínuo, configure uma conexão OAuth com suporte a refresh token antes de ativá-lo. Consulte o guia de OAuth do Dropbox; nunca publique tokens em código ou capturas de tela.

No Dropbox, criamos uma pasta chamada importFolder. Quando é feito o upload de novos
arquivos para essa pasta, o Zapier detecta automaticamente o novo arquivo e o repassa para a
Transloadit processar.

Também criamos uma pasta para os resultados da nossa Assembly, chamada exportFolder.
Com acesso App folder, crie as duas pastas dentro da pasta do Dropbox do seu
app, por exemplo /Apps/MyApp/importFolder e /Apps/MyApp/exportFolder. A API do Dropbox
trata essa pasta do app como raiz, então a Transloadit precisa de /importFolder/image.jpg, e não de
/Apps/MyApp/importFolder/image.jpg. A seção do Zapier abaixo converte o caminho da conta informado pelo gatilho.
Com acesso Full Dropbox, as duas pastas podem ficar na raiz da sua conta
e nenhuma conversão é necessária. Veja as orientações do Dropbox sobre a raiz da API.

Transloadit
Do lado da Transloadit, primeiro precisamos configurar nossas Credenciais de Template.
As capturas de tela do Console abaixo mostram a interface em inglês.
Acesse suas Credenciais de Template. Clique em Adicionar nova credencial,
selecione Dropbox e insira as informações necessárias. O nome que escolhemos foi
TestWorkBox.

Agora podemos criar nosso Template. Esse Template importa uma imagem do nosso Dropbox, redimensiona essa imagem e depois exporta o resultado da nossa Assembly.
Copie o código JSON abaixo e salve-o como um novo Template, sem esquecer de anotar o seu Template ID.
{
"steps": {
"imported": {
"robot": "/dropbox/import",
"path": "${fields.dropbox_file_path}",
"credentials": "TestWorkBox",
"result": true
},
"images": {
"use": "imported",
"robot": "/image/resize",
"format": "png",
"width": 500,
"height": 500,
"resize_strategy": "fit",
"imagemagick_stack": "v3.0.1"
},
"exported": {
"use": ["images"],
"robot": "/dropbox/store",
"credentials": "TestWorkBox",
"path": "exportFolder/resized_${fields.file_name}.${file.ext}"
}
}
}
No Template acima, o parâmetro credentials recebe o nome da credencial do Dropbox configurada
anteriormente, TestWorkBox. Nos Steps imported e exported, usamos as
Assembly Variables
${fields.dropbox_file_path} e ${fields.file_name} no parâmetro path. Esses são os dois campos
que vamos manipular com o Zapier.
No Zapier
Agora, finalmente, vamos ver o Zapier e como superamos a limitação de campo único. Crie um novo Zap usando Dropbox como Trigger e New File in Folder como Trigger Event.

Clique em Continue e escolha sua conta do Dropbox.

Agora, especificamos a pasta da qual nosso Step de importação vai pegar os arquivos. Esse valor
precisa corresponder à pasta criada anteriormente, importFolder. Com acesso à pasta do app,
selecione a pasta dentro da pasta do Dropbox do app, como /Apps/MyApp/importFolder.

Clique em Continue e depois em Test Trigger. Se tudo estiver certo, depois de alguns segundos você deverá ver os metadados de um arquivo aleatório da pasta especificada, o que indica que seu Dropbox foi vinculado com sucesso. Antes de clicar em Continue, vamos configurar os vários campos que passamos do Zapier para a Transloadit.
Com acesso à pasta do app, primeiro adicione uma ação Code by Zapier usando
JavaScript. Em Input Data, mapeie
file_path para o caminho do arquivo do gatilho do Dropbox, e não para o ID do arquivo ou a URL de
download. Defina app_folder como o prefixo da pasta do app copiado exatamente desse
caminho, respeitando maiúsculas e minúsculas, mas sem a barra final, como /Apps/MyApp.
Use este código:
const path = inputData.file_path
const appFolder = inputData.app_folder
if (
typeof path !== 'string' ||
typeof appFolder !== 'string' ||
!appFolder.startsWith('/') ||
appFolder.endsWith('/') ||
!path.startsWith(`${appFolder}/`)
) {
throw new Error('Select a file inside the configured Dropbox app folder.')
}
return { dropbox_file_path: path.slice(appFolder.length) }
Teste a ação Code: /Apps/MyApp/importFolder/image.jpg deve gerar
dropbox_file_path com /importFolder/image.jpg. Se o gatilho já retornar um caminho
relativo ao app, pule essa conversão. Com acesso à conta inteira, também pule essa etapa e use o
caminho original do gatilho. Consulte o guia de JavaScript do Zapier
para conhecer o editor de código atual.
Em seguida, clique em + e selecione Format com o evento definido como Utilities.

Clique em Continue e, no campo Transform, selecione Line Itemizer (Create/Append/Prepend). Na seção Line-Item Properties, vamos adicionar os nomes de campo que definimos no nosso Template, além dos valores que queremos passar. Ao digitar os nomes dos campos, certifique-se de que não haja espaço depois da vírgula. O Zapier vai considerar o espaço como parte do nome do campo. Além disso, ao escolher os valores dos campos, selecione-os na mesma ordem dos nomes dos campos.
Mapeie dropbox_file_path para a saída normalizada da ação Code quando essa etapa for necessária;
caso contrário, para o caminho original do gatilho do Dropbox. Mapeie file_name para o
nome do arquivo do gatilho. O caminho de exportação no nosso Template já é relativo à raiz da
credencial, então mantenha-o como está.

Clique em Continue e depois em Test & Review, e você verá o nome do campo com o valor correspondente. Clique mais uma vez em Continue para que possamos configurar a ação.
Como Action App, vamos selecionar Transloadit, com o Action Event Create Assembly.

Clique em Continue como antes e vincule sua conta da Transloadit.

Agora podemos colocar em ação os vários campos que criamos antes. Insira o Template ID que você salvou no campo Template. Em Assembly Field Name, selecione Output Line Item(s) Field Name do formatador. Em Assembly Field Value, selecione Output Line Item(s) Field Value. O Template ID não deve ser informado em nenhum dos dois campos de entrada da Assembly.

Uma última vez, clique em Continue e Test & Review. Isso vai criar uma nova Assembly e exibir na tela os dados correspondentes dessa Assembly.
Agora que terminamos de criar nosso Zap, podemos executá-lo. Sempre que for feito o upload de um novo
arquivo para a nossa pasta importFolder, o Zap será acionado em poucos minutos,
criando uma Assembly.
Resultados
Depois que o Zap for acionado, acesse a seção Assemblies do seu Console para ver os resultados.


Se quiser ver um exemplo dessa implementação, dê uma olhada no blog (English) do meu colega Joseph. O blog dele mostra como usar os vários campos para gerar automaticamente prévias de músicas do Spotify. Por hoje é só! Seguindo estes passos simples, seus Zaps devem funcionar sem problemas e da mesma forma que funcionavam antes de você saber como contornar a limitação de campo único.
