Zapier Loop Through Items

Problema

Cuando se utiliza Zapier para leer un archivo CSV como en el paso 2 del ejemplo siguiente, Zapier avienta todos los renglones del CSV en un mismo renglón en un formato que ellos llaman “line-items”.

El problema es que se necesita que el siguiente paso de generar un nuevo expediente en Expediente Azul se ejecute una vez por cada renglón del CSV por lo que hay que “explotar” esos line-times del paso 2 para se ejecute el paso de generar un expediente una vez por cada renglón del CSV.

Solución

Se configura el paso 3 que convierte los “line-times” a renglones dónde cada renglón será procesado por el paso subsequente que generará un nuevo expediente.

El paso 3 es de tipo “Code by Zapier” dónde el “Action Event” es “Run Javascript”. En el Input Data se teclea un nombre para la variable (que se utilizará en el paso siguiente de generación de un expediente) y en la siguiente columna se pondrá el “line-item” que contenga los valores de la variable, que viene del paso previó dónde se leyó el CSV.

Luego en la parte del código se pone lo siguiente que explotará cada renglón en renglones:

// get Input Data field names
let keys = Object.keys(inputData)
let data = [];

// loop through each Input Data field
for (let key of keys) {
  // split the contents of each Input Data field on the commas into an array
  let li = inputData[key].split(",");
  for (let i=0; i<li.length; i++) {
    if (typeof data[i] === "undefined") data[i] = {};
    data[i][key] = li[i];
    // add a record number (in case we want to break the fork/loop with a Filter)
    data[i].recordNumber = i+1;
  }
}

//preview the whole data structure in the output
//console.log(data);

output = data; 

NOTA: Dado que la coma es el identificador clave para separar los registros, es muy importante que NO se utilice una coma en los valores ya que podría dar un error.

Revisa más información sobre integraciones de Expediente Azul con otras herramientas