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 le fonctionnement de la solution.
  • Comprendre le rôle des services Google Apps Script dans la solution.
  • Configurer le script.
  • Exécuter 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 de remise pour vos prix dans Google Sheets.

Bien que vous puissiez utiliser la fonction intégrée SUMPRODUCT pour effectuer un calcul de tarification par paliers, elle est plus complexe et moins flexible que la fonction personnalisée de cette solution.SUMPRODUCT

Feuille de calcul Google Sheets montrant un calcul de tarification à plusieurs niveaux.

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 paliers : 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 dollars par 10 % et les 200 dollars restants par 20 %, pour une remise totale de 90 $.

Pour un prix total donné, le script parcourt les paliers spécifiés dans le tableau de tarification par paliers. Pour chaque partie du prix total qui se situe dans un palier, cette partie est multipliée par le pourcentage associé au palier. Le résultat est la somme du calcul de chaque palier.

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 palier.

Prérequis

Pour utiliser cet exemple, vous devez répondre aux prérequis suivants :

  • 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

Pour créer une copie de la feuille de calcul Fonction personnalisée de tarification par paliers, cliquez sur le bouton suivant :

Créer une copie

Le projet Apps Script de cette solution est associé à la feuille de calcul.

Exécuter le script

  1. Dans la feuille de calcul copiée, le tableau de la ligne 16 affiche un exemple de calcul de prix pour un produit Software as a Service (SaaS).
  2. Pour calculer le montant de la remise, dans la cellule C20, saisissez =tierPrice(C19,$B$3:$D$6). Le prix final est mis à jour dans la cellule C21. Si vous vous trouvez dans un pays où les virgules décimales sont utilisées, vous devrez peut-être saisir =tierPrice(C19;$B$3:$D$6) à la place.

Examiner le code

Pour examiner le code Apps Script de cette solution, cliquez sur Afficher le code source :

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 (const [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.
    const 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. Pour afficher une option permettant d'actualiser manuellement les résultats de la fonction personnalisée, cliquez sur Actualiser les résultats mis en cache :

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 tierPrice() fonction dans la cellule C20 en =tierPrice(C19,$B$3:$D$6,D20).
  3. Cochez ou décochez la case à cocher pour actualiser les résultats de la fonction personnalisée.

Contributeurs

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

Étapes suivantes