Script de exemplo que consulta a tabela Oportunidade

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 2 min. de leitura
  • Este script de exemplo consulta a tabela de oportunidades usando as ações personalizadas Obter todas as oportunidades, Obter oportunidades para ID da contae Obter detalhes da oportunidade.

    O script de exemplo consiste em três partes distintas:
    1. A primeira parte seleciona a ação personalizada correta e prepara as entradas para ela.
    2. A segunda parte faz uma chamada para a ação.
    3. A terceira parte processa as saídas da ação.

    Selecionar uma ação de spoke e preparar as entradas

    Nesta seção do script, selecione uma das três ações personalizadas que você preparou para obter oportunidades da aplicação Salesforce:
    • Obter todas as oportunidades
    • Obter oportunidades para ID da conta
    • Obter detalhes da oportunidade
    Você pode decidir qual ação chamar com base nos parâmetros incluídos no argumento da função v_query.
    /****** Choose action and prepare action inputs *****/
    var action = null;
    var inputs = {};
    
    // look up opportunity by salesforce record id
    if (v_query.isGet()) {
    
      action = "get_opportunity_details";
      inputs.salesforce_opportunity_record_id = v_query.getSysId();
          
    
    // look up opportunities by salesforce account id
    } else if (v_query.getParameter("u_sf_account_id")) {
    
        if (v_query.getParameter("u_sf_account_id") == "undefined") {
          gs.addInfoMessage(“Opportunities cannot be retrieved because “ +
                            “this “Account does not have associated “    +
                            “Salesforce Account. Please contact System “ +
                             “Administrator.");
          return;
    
        } else {
          action = "get_opportunities_for_account_id";
          inputs.salesforce_account_id = v_query.getParameter("u_sf_account_id");
        }
    
    // look up all opportunities
    } else {
      action = "get_all_opportunities";
    }
    

    Observe que este script configura uma mensagem informativa se a conta do Salesforce estiver indefinida quando for necessária para a ação. O valor indefinido vem do relacionamento descrito em Como usar uma lista relacionada para criar a conexão entre a conta do cliente e as oportunidades do Salesforce.

    Quando a conta do Salesforce está indefinida, não há nada para consultar neste caso e a função retorna sem chamar a ação spoke.

    Chamando a ação do spoke

    Nesta seção do script, chame a ação usando os nomes do spoke do Salesforce e a ação selecionada e armazene as saídas da chamada.

    /***** Call action *****/
    var outputs =
            sn_fd.FlowAPI.executeAction("sn_salesforce_spok." + action, inputs);
    

    Processando a saída da ação

    Nesta seção do script, processe as saídas começando com a verificação de erros.

    /***** Process action outputs *****/
    if (outputs.status != "Success") {
    throw new Error(outputs.error_message);
    }
    

    Se a consulta não retornar erros, o script precisará processar os registros retornados e adicioná-los como linhas na tabela remota. Mapeie os campos de oportunidade do Salesforce nas colunas da tabela remota.

    var opportunities = outputs.opportunities.data;
    
     for (var i = 0; i < opportunities.length; i++) {
      var opportunity = opportunities[i];
      v_table.addRow({
        "u_sf_amount": opportunity.Amount,
        "u_sf_close_date": opportunity.CloseDate,
        "u_sf_name": opportunity.Name,
        "u_sf_probability": opportunity.Probability + "%",
        "u_sf_account_id": opportunity.AccountId,
        "u_sf_stage": opportunity.StageName,
        “u_sf_type": opportunity.Type,
        "sys_id": opportunity.Id,
      });
    }
    

    Observe que a ID do registro de oportunidade do Salesforce está atribuída à tabela remota sys_id. Isso garante que as listas e os formulários da tabela remota funcionem corretamente e que possamos extrair a ID do registro usando v_query.getSysId() na próxima vez que o script da tabela remota for invocado.

    Em seguida, exiba a mensagem de informações se ela tiver sido passada pela consulta.

    if (outputs.info_message) {
      gs.addInfoMessage(outputs.info_message);
    }
    

    Reunindo as seções de script da tabela remota

    As três seções do script estão incluídas no bloco de tentativa de captura para fornecer tratamento de erros.

    (function executeQuery(v_table, v_query) {
    
      try {
    
        // place code here from: <Selecting a spoke action and preparing the inputs>
    
        // place code here from: <Calling the spoke action>
    
        // place code here from: <Processing the action output>  	
            
      } catch (error) {
        gs.addErrorMessage("Error retrieving  Salesforce Opportunities. “ +
                           “Please contact System Administrator.");
        gs.addErrorMessage("System Error: " + error.message);
      }
    
    })(v_table, v_query);