Calculer une remise sur le tarif par paliers

Niveau de programmation : débutant
Durée : 10 minutes
Type de projet : Fonction personnalisée

Objectifs

  • Comprendre ce que fait la solution
  • Comprendre le rôle des services Apps Script dans la solution
  • Configurez le script.
  • Exécutez le script.

À propos de cette solution

Si vous proposez un système de tarification par paliers à vos clients, cette fonction personnalisée vous permet de calculer plus facilement les montants des remises pour vos prix.

Bien que vous puissiez utiliser la fonction intégrée SUMPRODUCT pour calculer une tarification par paliers, l'utilisation de SUMPRODUCT est plus complexe et moins flexible que la fonction personnalisée de cette solution.

Capture d'écran de l'exemple de tarification par niveau

Fonctionnement

Un modèle de tarification par paliers signifie que le coût des biens ou des services diminue en fonction de la quantité achetée.

Par exemple, imaginez que vous avez deux niveaux : l'un allant de 0 à 500 € avec une remise de 10 % et l'autre allant de 501 à 1 000 € avec une remise de 20 %. Si le prix total pour lequel vous devez calculer une remise est de 700 $, le script multiplie les 500 $premiers par 10 % et les 200 $restants par 20 %, pour une remise totale de 90 $.

Pour un prix total donné, le script parcourt les niveaux spécifiés dans le tableau des tarifs par niveau. Pour chaque partie du prix total qui se trouve dans une tranche, cette partie est multipliée par le pourcentage associé à la tranche. Le résultat correspond à la somme des calculs de chaque niveau.

Services Apps Script

Cette solution utilise le service suivant :

  • Service de feuille de calcul : prend la valeur donnée et calcule la part de la valeur à multiplier par le pourcentage de remise de chaque niveau.

Prérequis

Pour utiliser cet exemple, vous devez remplir les conditions préalables suivantes :

  • Un compte Google (l'approbation de l'administrateur peut être nécessaire pour les comptes Google Workspace).
  • Un navigateur Web avec accès à Internet.

Configurer le script

Cliquez sur le bouton ci-dessous pour copier la feuille de calcul Fonction personnalisée de tarification par niveau. Le projet Apps Script pour cette solution est joint à la feuille de calcul.
Créer une copie

Exécuter le script

  1. Dans la feuille de calcul que vous avez copiée, le tableau de la ligne 16 montre un exemple de calcul du prix d'un produit Software as a Service (SaaS).
  2. Pour calculer le montant de la remise, saisissez =tierPrice(C19,$B$3:$D$6) dans la cellule C20. Les prix finaux sont mis à jour dans la cellule C21. Si vous vous trouvez dans un pays qui utilise des virgules décimales, vous devrez peut-être saisir =tierPrice(C19;$B$3:$D$6).

Examiner le code

Pour consulter le code Apps Script de cette solution, cliquez sur Afficher le code source ci-dessous :

Afficher le code source

Code.gs

solutions/custom-functions/tier-pricing/Code.js
// To learn how to use this script, refer to the documentation:
// https://developers.google.com/apps-script/samples/custom-functions/tier-pricing

/*
Copyright 2022 Google LLC

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

/**
 * Calculates the tiered pricing discount.  
 *  
 * You must provide a value to calculate its discount. The value can be a string or a reference
 * to a cell that contains a string.
 * You must provide a data table range, for example, $B$4:$D$7, that includes the 
 * tier start, end, and percent columns. If your table has headers, don't include
 * the headers in the range.
 * 
 * @param {string} value The value to calculate the discount for, which can be a string or a 
 * reference to a cell that contains a string.
 * @param {string} table The tier table data range using A1 notation.
 * @return number The total discount amount for the value.
 * @customfunction
 *  
 */
function tierPrice(value, table) {
  let total = 0;
  // Creates an array for each row of the table and loops through each array.
  for (let [start, end, percent] of table) {
  // Checks if the value is less than the starting value of the tier. If it is less, the loop stops.
    if (value < start) {
      break;
    }
  // Calculates the portion of the value to be multiplied by the tier's percent value.
    let amount = Math.min(value, end) - start;
  // Multiplies the amount by the tier's percent value and adds the product to the total.
    total += amount * percent;
  }
  return total;
}

Modifications

Vous pouvez modifier la fonction personnalisée autant que vous le souhaitez pour l'adapter à vos besoins. Vous trouverez ci-dessous un ajout facultatif permettant d'actualiser manuellement les résultats des fonctions personnalisées.

Actualiser les résultats mis en cache

Contrairement aux fonctions intégrées, Google met en cache les fonctions personnalisées pour optimiser les performances. Par conséquent, si vous modifiez un élément de votre fonction personnalisée, comme une valeur calculée, il est possible que la mise à jour ne soit pas forcée immédiatement. Pour actualiser manuellement le résultat de la fonction, procédez comme suit :

  1. Ajoutez une case à cocher à une cellule vide en cliquant sur Insérer > Case à cocher.
  2. Ajoutez la cellule contenant la case à cocher en tant que paramètre supplémentaire de la fonction personnalisée. Par exemple, si vous ajoutez une case à cocher à la cellule D20, mettez à jour la fonction tierPrice() dans la cellule C20 en =tierPrice(C19,$B$3:$D$6,D20).
  3. Cochez ou décochez la case pour actualiser les résultats de la fonction personnalisée.

Contributeurs

Cet exemple est géré par Google avec l'aide des Google Developer Experts.

Étapes suivantes