---
sourceDocument: Yokohama Customer Service Management
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/yokohama/customer-service-management

 Release :

    - yokohama

ft:locale :

    - pt-BR

ft:publication_title :

    - Yokohama Customer Service Management

ft:clusterId :

    - csm

bundleId :

    - csm

workflow :

    - Customer and Industry


---

# Script de exemplo que consulta a tabela de oportunidades

# Script de exemplo que consulta a tabela de oportunidades {#csm-opportunity-table-script___Ref16694770}

* Versão de lançamento: Yokohama
* 
* Atualizado 30 de jan. de 2025
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 3 min. de leitura

Este script de exemplo consulta a tabela de oportunidades usando Obtenha todas as oportunidades , Obtenha oportunidades para o ID da conta e. Obter detalhes da oportunidade ações personalizadas.  
O script de exemplo consiste em três partes distintas:

1. A primeira parte seleciona a ação personalizada correta e prepara 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.
{#csm-opportunity-table-script__ol_u1s_tyj_v3b}

## Selecionar uma ação de spoke e preparar as entradas {#csm-opportunity-table-script__section_select_spoke_actions}

Nesta seção do script, selecione uma das três ações personalizadas para as quais você está preparado para obter oportunidades da aplicação Salesforce:

* Obtenha todas as oportunidades
* Obtenha oportunidades para o ID da conta
* Obter detalhes da oportunidade

{#csm-opportunity-table-script__ul_z1q_bzj_v3b} Você pode decidir qual ação chamar com base nos parâmetros incluídos em `v_query `argumento da função.  

    /****** 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 exigido pela ação. O valor indefinido vem do relacionamento descrito em [Usando uma lista relacionada para criar a conexão entre a conta do cliente e as oportunidades do Salesforce](https://servicenow-prod.fluidtopics.net/J8nczQaeFNwyE0oH4qHU9g "Use uma lista relacionada para vincular a tabela Conta do cliente à SalesforceID da conta e o. SalesforceTabela remota de oportunidade com o mesmo ID de conta.").

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 do spoke.

## Chamando a ação do spoke {#csm-opportunity-table-script__section_ed2_pzj_v3b}

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 {#csm-opportunity-table-script__section_pqr_szj_v3b}

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 o ID do registro de oportunidade do Salesforce é atribuído à tabela remota sys_id. Isso verifica se as listas e os formulários da tabela remota funcionam corretamente e se podemos extrair o ID de registro usando `v_query.getSysId() `na próxima vez em que o script da tabela remota for invocado.

Em seguida, exiba a mensagem informativa se ela tiver sido aprovada pela consulta.  

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

## Juntando as seções de script da tabela remota {#csm-opportunity-table-script__section_z11_k1k_v3b}

As três seções do script estão incluídas no bloco try-catch 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);


