Exemple de script interrogeant la table Opportunité
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é.
- La première partie sélectionne l'action personnalisée correcte et lui prépare des entrées.
- La deuxième partie appelle l'action.
- La troisième partie traite les sorties de l'action.
Sélectionner une action de spoke et préparer les entrées
- Obtenir toutes les opportunités
- Obtenir les opportunités pour l'ID de compte
- Obtenir les détails sur 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 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.
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.
Appeler l'action de spoke
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
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 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 d’enregistrement à l’aide de v_query.getSysId() la prochaine fois que le script de la table distante est appelé.
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
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);