[Resolvido] Expressão JavaScript não funciona, porque?

Olá pessoal, bom dia!

Estou testando o seguinte comando no script do Blip, mas não retorna o texto.

/*
    Função que retorna as informações formatadas aos usuários.
*/
function run( responseConsultaChamado ) {

    var json = JSON.parse(responseConsultaChamado);

    var incidente = {
        number: json.result[0].number,
        state: json.result[0].state,
        impact: json.result[0].impact,
        priority: json.result[0].priority,
        urgency: json.result[0].urgency,
        short_description: json.result[0].short_description,
        comments: json.result[0].comments,
        u_planned_end_time: json.result[0].u_planned_end_time
    };

    // Testar apenas o retorno do incidente
    var teste = `Número: ${incidente.number}`;

    return teste;
}

Quando eu uso o comando string.concat() ou o tradicional com operador +, funciona certinho.

/*
    Função que retorna as informações formatadas aos usuários.
*/
function run( responseConsultaChamado ) {

    var json = JSON.parse(responseConsultaChamado);

    var incidente = {
        number: json.result[0].number,
        state: json.result[0].state,
        impact: json.result[0].impact,
        priority: json.result[0].priority,
        urgency: json.result[0].urgency,
        short_description: json.result[0].short_description,
        comments: json.result[0].comments,
        u_planned_end_time: json.result[0].u_planned_end_time
    };

    var frase = ''.concat( 
                    'Número: '                  , incidente.number,
                    '\nPrevisão de Conclusão: ' , incidente.u_planned_end_time,
                    '\nStatus: '                , incidente.state,
                    '\nImpacto: '               , incidente.impact,
                    '\nPrioridade:'             , incidente.priority,
                    '\nUrgência: '              , incidente.urgency,
                    '\nResumo: '                , incidente.short_description,
                    '\nHistórico:\n '           , incidente.comments
                    );
                    
    return frase;
}

Olá ralsouza,

Esta sintaxe de Template literals pertence ao ES6, por isso não funciona.

O script presente no Builder utiliza o ES5 por trás.

2 Curtidas

Entendi, obrigado!

A alternativa é usar o operador + ou string.concat() mesmo?

Existe alguma forma mais elegante de fazer isso no ES5?

Você pode tentar JSON.stringify()

function run( responseConsultaChamado ) {

    var json = JSON.parse(responseConsultaChamado);

    var incidente = {
        number: json.result[0].number,
        state: json.result[0].state,
        impact: json.result[0].impact,
        priority: json.result[0].priority,
        urgency: json.result[0].urgency,
        short_description: json.result[0].short_description,
        comments: json.result[0].comments,
        u_planned_end_time: json.result[0].u_planned_end_time
    };

return 'Número: ' + JSON.stringify(incidente);
}
2 Curtidas

Oi @andrebnassis, obrigado! Entendi.

Este código não funciona também, você acha que é devido a mesma causa?

lastComment: [formatDate(json.result[0].comments.match(/[\S\s]+?(?=\n{2})/g).map(str => str.replace(/\n/g, ' '))[0].slice(0,19)),
                                 json.result[0].comments.match(/[\S\s]+?(?=\n{2})/g).map(str => str.replace(/\n/g, ' '))[0].slice(22).replace(' (Comentários adicionais) ',': ')], 

Olá @ralsouza,

Exatamente. A função map() pertence ao ES6 e por isso não funciona.

1 Curtida