---
sourceDocument: Gestion du service clientèle Xanadu
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/fr-FR/xanadu/customer-service-management

 Release :

    - xanadu

ft:locale :

    - fr-FR

ft:publication_title :

    - Gestion du service clientèle Xanadu

ft:clusterId :

    - csm

bundleId :

    - csm

workflow :

    - Customer and Industry


---

# Exemple de script interrogeant la table Opportunité

# Exemple de script interrogeant la table Opportunité {#csm-opportunity-table-script___Ref16694770}

* Rversion finale: Xanadu
* 
* Mis à jour 1 août 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 3 minutes de lecture

Cet exemple de script interroge la table Opportunité à l'aide des actions personnalisées Obtenir toutes les opportunités, Obtenir toutes les opportunités pour l'ID de compte et Obtenir les détails sur l'opportunité.  
L'exemple de script se compose de trois parties distinctes :

1. La première partie sélectionne l'action personnalisée correcte et lui prépare des entrées.
2. La deuxième partie appelle l'action.
3. La troisième partie traite les sorties de l'action.
{#csm-opportunity-table-script__ol_u1s_tyj_v3b}

## Sélectionner une action de spoke et préparer les entrées {#csm-opportunity-table-script__section_select_spoke_actions}

Dans cette section du script, sélectionnez une des trois actions personnalisées que vous avez préparées pour obtenir les opportunités de l'application Salesforce :

* Obtenir toutes les opportunités
* Obtenir les opportunités pour l'ID de compte
* Obtenir les détails sur l'opportunité

{#csm-opportunity-table-script__ul_z1q_bzj_v3b} Vous pouvez décider quelle action appeler en fonction des paramètres inclus dans l'argument de fonction `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";
    }

Notez que ce script configure un message d'information si le compte Salesforce n'est pas défini lorsqu'il est requis par l'action. La valeur non définie provient de la relation décrite dans [Utiliser une liste connexe pour créer la connexion entre le compte client et les opportunités Salesforce](https://servicenow-prod.fluidtopics.net/fuerH5e1Zn0k0zWY~G6mDQ "Utilisez une liste connexe pour établir la connexion entre la table Compte client qui détient l'ID de compte Salesforce et la table distante Opportunité Salesforce qui détient le même ID de compte Salesforce.").

Lorsque le compte Salesforce n'est pas défini, il n'y a rien à interroger dans ce ticket et la fonction revient sans appeler l'action de spoke.

## Appeler l'action de spoke {#csm-opportunity-table-script__section_ed2_pzj_v3b}

Dans cette section du script, appelez l'action en utilisant les noms du spoke Salesforce et de l'action sélectionnée, puis stockez les sorties de l'appel.  

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

## Traiter la sortie de l'action {#csm-opportunity-table-script__section_pqr_szj_v3b}

Dans cette section du script, traitez les sorties en commençant par vérifier la présence d'erreurs.  

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

Si la requête ne renvoie aucune erreur, le script doit traiter les enregistrements renvoyés et les ajouter sous forme de lignes dans la table distante. Mappez les champs d'opportunité Salesforce dans les colonnes de la table distante.  

    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,
      });
    }

Notez que l'ID de l'enregistrement d'opportunité Salesforce est affecté à la table distante sys_id. Cela garantit que les listes et les formulaires de la table distante fonctionnent correctement et qu'il sera possible d'extraire l'ID d'enregistrement en utilisant `v_query.getSysId()` la prochaine fois que le script de table distante sera invoqué.

Ensuite, affichez le message d'information s'il a été transmis par la requête.  

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

## Assembler les sections du script de table distante {#csm-opportunity-table-script__section_z11_k1k_v3b}

Les trois sections du script sont incluses dans le bloc \<\< try-catch \>\> pour assurer le traitement des erreurs.  

    (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);


