Récupérer un paramètre d’url dans un item de catalogue

Les items de catalogues dans ServiceNow sont des formulaires qui permettent aux utilisateurs finaux de faire des demandes de service. Dans certains cas, il est nécessaire d’utiliser les informations contenus dans l’url afin de pré-remplir le formulaire. 

C’est une technique couramment utilisée pour transmettre des informations d’une page vers une autre, en utilisant les query parameters.

Cependant, il n’existe pas de fonction native dans ServiceNow pour lire les paramètres d’un url.

La fonction ci-dessous permet de faire cette action. L’idée est de récupérer l’url, puis d’utiliser une expression régulière pour extraire le query parameter qui nous intéresse.

				
					function getDefaultValues(name) {
	
	var regexS = "[\\?&]" + name + "=([^&#]*)";
	var regex = new RegExp(regexS);
	var results = regex.exec(top.location);

	if (results == null || results.length < 1) {
		return [];
	} 
	
	return unescape(results[1]);
}
				
			

La fonction peut-être utilisé dans une client script de la manière suivante. On passe le nom du query parameter qu’on souhaite récupérer. La fonction retourne alors un tableau avec le nom du champs ainsi que la valeur.

				
					function onLoad() {

	var queryParams = getDefaultValues('sysparm_default');
	
	queryParams.forEach(function(param){
		g_form.setValue(param.key, param.value);
	});
}
				
			

Bonus : voici une variante de la fonction permettant de décoder une encoded query.

				
					function getDefaultValues(name) {
	
	var regexS = "[\\?&]" + name + "=([^&#]*)";
	var regex = new RegExp(regexS);
	var results = regex.exec(top.location);

	if (results == null || results.length < 1) {
		return [];
	} 
	
	var queryParams = unescape(results[1]);
		queryParams = queryParams.split('^');
		
		return queryParams.reduce(function(defaultValues, params){
			var field = params.split('=')[0];
			var value = params.split('=')[1];
			
			defaultValues.push({key: field, value: value});
			return defaultValues;
		}, []);

}
				
			

Par exemple, si vous avez l’url suivant : https://your-instance.service-now.com/sp?id=sc_cat_item&sysparm_defaul=user=123^asset=312313, la fonction ci-dessous vous retournera un tableau avec les valeurs suivantes :

				
					[
    {
        key: 'user',
        value: '123'
    },
    {
        key: 'asset',
        value: '312313'
    },
]
    
				
			

Cet article vous a plu ? Partagez-le !

Facebook
Twitter
LinkedIn