Exemple de script qui interroge la table Opportunité
Cet exemple de script interroge la table d’opportunités à l’aide des actions personnalisées Obtenir toutes les opportunités, Obtenir les opportunités pour l’ID de compte et Obtenir les détails de l’opportunité .
- La première partie sélectionne l’action personnalisée correcte et prépare les entrées correspondantes.
- La deuxième partie appelle l’action.
- La troisième partie traite les sorties de l’action.
Sélection d’une action de spoke et préparation des entrées
- Obtenir toutes les opportunités
- Obtenir des opportunités pour l’ID de compte
- Obtenir les détails de l’opportunité
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 lorsque cela est requis par l’action. La valeur non définie provient de la relation décrite dans Utilisation d’une liste connexe pour créer la connexion entre le compte client et les opportunités Salesforce.
Lorsque le compte Salesforce n’est pas défini, il n’y a rien à interroger dans ce cas et la fonction est renvoyée sans appeler l’action de spoke.
Appel de l’action de spoke
Dans cette section du script, appelez l’action à l’aide des noms du spoke Salesforce et de l’action sélectionnée et stockez les sorties de l’appel.
/***** Call action *****/
var outputs =
sn_fd.FlowAPI.executeAction("sn_salesforce_spok." + action, inputs);
Traitement de la sortie de l’action
Dans cette section du script, traitez les sorties en commençant par la vérification des 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 en tant que 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 d’enregistrement d’opportunité Salesforce est affecté à la table distante sys_id. Cela permet de vérifier que les listes et les formulaires de la table distante fonctionnent correctement et que nous sommes en mesure d’extraire l’ID de l’enregistrement à l’aide de v_query.getSysId() la prochaine fois que le script de table distante est invoqué.
Affichez ensuite le message d’information s’il a été transmis par la requête.
if (outputs.info_message) {
gs.addInfoMessage(outputs.info_message);
}
Assemblage des sections de script de la table distante
Les trois sections du script sont incluses dans le bloc try-catch pour permettre la gestion 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);