AmiQuote: Trying but I can't manage it

Hi, I hope someone can help me.

I've found a very interesting website [Amplitud de Mercado]
that allows you to extract market breadth data through an API. For now, I'm just testing a "demo" version they provide.

I've created a list of the tickers I think can be retrieved from that API, and they are:

But I'm stuck trying to create a user-definable data source with AmiQuote and then use it to obtain the data.

I'm doing the following in the General tab:

And I think it's in the JavaScript tab where I'm stuck (in fact, I'm trying to do it with Gemini because I can't do it on my own). This is what I've done with Gemini:

function Process( input, sym )
{
    // 1. Verificación de entrada básica
    if (!input || input.indexOf("<html") != -1 || input.indexOf("<!DOCTYPE") != -1) return "";

    var obj;
    try {
        obj = eval("(" + input + ")");
    } catch(e) {
        return "";
    }

    // 2. Comprobación del nodo raíz
    if (!obj || !obj.datosAmplitud) return "";
    var root = obj.datosAmplitud;
    var csvOutput = "";
    
    function fF(s) {
        if(!s) return "01-01-2026";
        var str = s.toString();
        if (str.length < 8) return "01-01-2026";
        return str.substring(0, 2) + "-" + str.substring(2, 4) + "-" + str.substring(4, 8);
    }

    var data = null;
    var col = -1;
    var cleanSym = sym.toUpperCase();

    // --- BLOQUE NYSE (Seguro) ---
    if (cleanSym.indexOf("NYSE") != -1 && root.nyse) {
        data = root.nyse;
        if (cleanSym == "NYSE") col = 1;
        else if (cleanSym.indexOf("SUB") != -1) col = 2;
        else if (cleanSym.indexOf("BAJ") != -1) col = 3;
        else if (cleanSym.indexOf("VOLS") != -1) col = 4;
        else if (cleanSym.indexOf("VOLB") != -1) col = 5;
        else if (cleanSym.indexOf("MAX") != -1) col = 6;
        else if (cleanSym.indexOf("MIN") != -1) col = 7;
        else if (cleanSym.indexOf("MCC") != -1) col = 8;
        else if (cleanSym.indexOf("ADN") != -1) col = 9;
        else if (cleanSym.indexOf("RASI") != -1) col = 10;
    }

    // --- BLOQUE NASDAQ (Seguro) ---
    else if (cleanSym.indexOf("NASD") != -1 && root.nasdaq) {
        data = root.nasdaq;
        if (cleanSym == "NASDAQ") col = 1;
        else if (cleanSym.indexOf("SUB") != -1) col = 2;
        else if (cleanSym.indexOf("BAJ") != -1) col = 3;
        else if (cleanSym.indexOf("MAX") != -1) col = 6;
        else if (cleanSym.indexOf("MIN") != -1) col = 7;
        else if (cleanSym.indexOf("ADN") != -1) col = 9;
    }

    // --- BLOQUE SENTIMIENTO (Seguro) ---
    else if (cleanSym.indexOf("AAII") != -1 && root.encuestas && root.encuestas.aaii) {
        data = root.encuestas.aaii;
        col = (cleanSym.indexOf("BULL") != -1) ? 1 : 2;
    }
    else if (cleanSym.indexOf("II_") != -1 && root.encuestas && root.encuestas.ii) {
        data = root.encuestas.ii;
        col = (cleanSym.indexOf("BULL") != -1) ? 1 : 2;
    }

    // --- BLOQUE MACRO (Seguro) ---
    else if (root.macro) {
        if (cleanSym.indexOf("VIX") != -1 && root.macro.diarios) { 
            data = root.macro.diarios; col = 1; 
        }
        else if (cleanSym.indexOf("PC_RATIO") != -1 && root.macro.diarios) { 
            data = root.macro.diarios; col = 3; 
        }
        else if (cleanSym.indexOf("ADBONOHY") != -1 && root.macro.bonos) { 
            data = root.macro.bonos; col = 2; 
        }
        else if (cleanSym.indexOf("ADBONOCEF") != -1 && root.macro.bonos) { 
            data = root.macro.bonos; col = 3; 
        }
    }

    // Volcado de datos para tablas (NYSE, NASD, AAII, II, VIX, Bonos...)
    if (col != -1 && data && data.length > 0) {
        for (var i = 1; i < data.length; i++) {
            if (data[i] && data[i][0]) {
                csvOutput += sym + "," + fF(data[i][0]) + "," + data[i][col] + "\n";
            }
        }
    }

    // --- BLOQUE FEAR & GREED (Caso especial) ---
    if (cleanSym.indexOf("FEARGREED") != -1 && root.macro && root.macro.fearGreed) {
        var fg = root.macro.fearGreed;
        if (fg.length > 0) {
            if (!Array.isArray(fg[0])) { // Un solo dato
                csvOutput += sym + "," + fF(fg[0]) + "," + fg[1] + "\n";
            } else { // Histórico si existiera
                for (var j = 1; j < fg.length; j++) {
                    csvOutput += sym + "," + fF(fg[j][0]) + "," + fg[j][1] + "\n";
                }
            }
        }
    }

    return csvOutput;
}

I'm not getting anywhere. I paid for AmiQuote, and I'm sure it can connect to this API, but without help, I won't be able to.

Any help would be greatly appreciated.