Obliczanie rabatu cenowego według poziomu

Poziom kodowania: początkujący
Czas trwania: 10 minut
Typ projektu: funkcja niestandardowa

Cele

  • Dowiedz się, co robi rozwiązanie.
  • Dowiedz się, jakie funkcje pełnią usługi Apps Script w rozwiązaniu.
  • Skonfiguruj skrypt.
  • Uruchom skrypt.

Informacje o rozwiązaniu

Jeśli oferujesz klientom system cen warstwowych, ta funkcja niestandardowa ułatwi Ci obliczanie kwot rabatów.

Do obliczania cen warstwowych możesz użyć wbudowanej funkcji SUMPRODUCT, ale jest ona bardziej złożona i mniej elastyczna niż funkcja niestandardowa w tym rozwiązaniu.SUMPRODUCT

Zrzut ekranu z przykładowymi cenami w zależności od poziomu

Jak to działa

Model cen warstwowych oznacza, że koszt towarów lub usług maleje w zależności od zakupionej ilości.

Załóżmy, że masz 2 poziomy: jeden w zakresie 0–500 PLN z rabatem 10% i drugi w zakresie 501–1000 PLN z rabatem 20%. Jeśli łączna cena, dla której chcesz obliczyć rabat, wynosi 700 PLN, skrypt mnoży pierwsze 500 PLN przez 10%, a pozostałe 200 PLN przez 20%, co daje łączny rabat w wysokości 90 PLN.

W przypadku danej ceny łącznej skrypt przechodzi przez określone poziomy w tabeli cenowej. Każda część ceny całkowitej, która mieści się w danym przedziale, jest mnożona przez powiązaną z tym przedziałem wartość procentową. Wynik to suma obliczeń dla każdego poziomu.

Usługi Apps Script

To rozwiązanie korzysta z tej usługi:

  • Usługa arkusza kalkulacyjnego – przyjmuje podaną wartość i oblicza, przez jaką część tej wartości należy pomnożyć procent rabatu w każdej kategorii.

Wymagania wstępne

Aby użyć tego przykładu, musisz spełnić te wymagania wstępne:

  • Konto Google (w przypadku kont Google Workspace może być wymagana zgoda administratora).
  • przeglądarkę internetową z dostępem do internetu,

Konfigurowanie skryptu

Kliknij przycisk poniżej, aby utworzyć kopię arkusza kalkulacyjnego funkcji niestandardowej cen warstwowych. Projekt Apps Script dla tego rozwiązania jest dołączony do arkusza kalkulacyjnego.
Utwórz kopię

Uruchamianie skryptu

  1. W skopiowanym arkuszu kalkulacyjnym tabela w wierszu 16 zawiera przykładowe obliczenia ceny produktu SaaS.
  2. Aby obliczyć kwotę rabatu, w komórce C20 wpisz =tierPrice(C19,$B$3:$D$6). Ostateczna cena zostanie zaktualizowana w komórce C21. Jeśli jesteś w lokalizacji, w której używa się przecinków dziesiętnych, może być konieczne wpisanie =tierPrice(C19;$B$3:$D$6).

Sprawdź kod

Aby sprawdzić kod Apps Script tego rozwiązania, kliknij Wyświetl kod źródłowy poniżej:

Pokaż kod źródłowy

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;
}

Reguły przekształcania

Możesz dowolnie edytować funkcję niestandardową, aby dostosować ją do swoich potrzeb. Poniżej znajdziesz opcjonalny dodatek, który umożliwia ręczne odświeżanie wyników funkcji niestandardowych.

Odświeżanie wyników z pamięci podręcznej

W przeciwieństwie do funkcji wbudowanych Google buforuje funkcje niestandardowe, aby optymalizować wydajność. Dlatego jeśli zmienisz coś w funkcji niestandardowej, np. obliczaną wartość, może to nie spowodować natychmiastowej aktualizacji. Aby ręcznie odświeżyć wynik funkcji, wykonaj te czynności:

  1. Dodaj pole wyboru do pustej komórki, klikając Wstaw > Pole wyboru.
  2. Dodaj komórkę zawierającą pole wyboru jako dodatkowy parametr funkcji niestandardowej. Jeśli na przykład dodasz pole wyboru do komórki D20, zaktualizuj funkcję tierPrice() w komórce C20 do =tierPrice(C19,$B$3:$D$6,D20).
  3. Zaznacz lub odznacz pole wyboru, aby odświeżyć wyniki funkcji niestandardowej.

Współtwórcy

Ten przykład jest obsługiwany przez Google przy pomocy ekspertów Google ds. programowania.

Dalsze kroki