Calculer une remise sur le tarif par paliers

Niveau de codage: Débutant
Durée: 10 minutes
Type de projet: Fonction personnalisée

Objectifs

  • Comprendre ce que la solution fait
  • Comprendre ce que font les 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 niveau à vos clients, cette fonction personnalisée vous permet de calculer plus facilement les montants de remise pour vos prix.

Bien que vous puissiez utiliser la fonction intégrée SUMPRODUCT pour effectuer un calcul de tarification par niveau, 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 niveau signifie que le coût des biens ou services diminue en fonction de la quantité achetée.

Par exemple, imaginons que vous ayez deux niveaux, l'un compris entre 0 et 500 $ avec une remise de 10% et l'autre compris entre 501 et 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 la grille tarifaire. Pour chaque partie du prix total qui se situe dans un niveau, cette partie est multipliée par la valeur en pourcentage associée à ce niveau. Le résultat correspond à la somme du calcul 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 partie 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 créer une copie de la feuille de calcul Fonction personnalisée de tarification par niveau. Le projet Apps Script de 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 présente un exemple de calcul du prix d'un produit SaaS (Software as a Service).
  2. Pour calculer le montant de la remise, saisissez =tierPrice(C19,$B$3:$D$6) dans la cellule C20. Le prix final est mis à jour dans la cellule C21. Si vous vous trouvez dans une région qui utilise des virgules décimales, vous devrez peut-être saisir =tierPrice(C19;$B$3:$D$6) à la place.

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 une option facultative pour actualiser manuellement les résultats de la fonction personnalisée.

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 quelque chose dans votre fonction personnalisée, comme une valeur en cours de calcul, il est possible qu'elle ne force pas immédiatement une mise à jour. Pour actualiser manuellement le résultat de la fonction, procédez comme suit:

  1. Pour ajouter une case à cocher dans une cellule vide, cliquez sur Insertion > 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 avec =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 experts Google pour les développeurs.

Étapes suivantes