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 fait la solution.
  • Vous connaissez le fonctionnement des services Apps Script dans le solution.
  • Configurez le script.
  • Exécutez le script.

À propos de cette solution

Si vous proposez un système de tarification par niveaux à vos clients, cette fonction personnalisée facilite le calcul du montant des remises pour vos prix.

Toutefois, vous pouvez utiliser la fonction intégrée SUMPRODUCT pour définir une tarification dégressive. calcul, l'utilisation de SUMPRODUCT est plus complexe et moins flexible que celle-ci la fonction personnalisée de la solution.

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

Fonctionnement

Un modèle de tarification à plusieurs niveaux signifie que le prix de revient des biens ou des services en fonction de la quantité achetée.

Imaginons, par exemple, que vous ayez deux niveaux, l'un compris entre 0 et 500 $, 10% de remise, 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 premiers 500 $de 10% et les 200 $restants de 20%, soit une remise totale de 90 €.

Pour un prix total donné, le script passe en boucle à travers les niveaux spécifiés dans la les tarifs de niveau supérieur. Pour chaque part du prix total qui tombe au sein d'un niveau, cette partie est multipliée par le pourcentage associé au niveau . Le résultat est la somme des calculs de chaque niveau.

Services Apps Script

Cette solution utilise le service suivant:

  • Service de feuille de calcul : prend la valeur valeur et calcule la portion de la valeur à multiplier par le nombre un pourcentage de remise.

Prérequis

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

  • Un compte Google (les comptes Google Workspace peuvent nécessitent l'approbation d'un administrateur).
  • Un navigateur Web ayant accès à Internet

Configurer le script

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

Exécuter le script

  1. Dans la feuille de calcul copiée, le tableau à la ligne 16 présente un exemple de prix pour un produit Software as a Service (SaaS).
  2. Pour calculer le montant de la remise, saisissez dans la cellule C20 =tierPrice(C19,$B$3:$D$6) Le prix final est mis à jour dans la cellule C21. Si vous utilisez dans un lieu 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. 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 en fonction de vos besoins. En dessous est un ajout facultatif permettant d'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 des performances. Par conséquent, si vous modifiez un élément une fonction spécifique, telle qu'une valeur en cours de calcul, il est possible qu'elle ne soit pas immédiatement pour forcer une mise à jour. Pour actualiser manuellement le résultat de la fonction, procédez comme suit : étapes:

  1. Ajoutez une case à cocher dans une cellule vide en cliquant sur Insérer. &gt; Case à cocher.
  2. Ajoutez la cellule contenant la case à cocher en tant que paramètre supplémentaire de la . Par exemple, si vous ajoutez une case à cocher à la cellule D20, mettez à jour la fonction tierPrice() dans la cellule C20 pour =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 échantillon est géré par Google avec l'aide d'Experts Google Developers.

Étapes suivantes