Menghitung diskon harga bertingkat

Tingkat coding: Pemula
Durasi: 10 menit
Jenis project: Fungsi kustom

Tujuan

  • Pahami fungsi solusi.
  • Pahami fungsi layanan Apps Script dalam solusi.
  • Siapkan skrip.
  • Jalankan skrip.

Tentang solusi ini

Jika Anda menawarkan sistem harga bertingkat untuk pelanggan, fungsi kustom ini akan mempermudah perhitungan jumlah diskon untuk harga Anda.

Meskipun Anda dapat menggunakan fungsi bawaan SUMPRODUCT untuk membuat perhitungan harga bertingkat, penggunaan SUMPRODUCT lebih rumit dan kurang fleksibel dibandingkan fungsi kustom solusi ini.

Screenshot contoh harga tingkat

Cara kerjanya

Model harga bertingkat berarti biaya barang atau jasa akan turun berdasarkan jumlah yang dibeli.

Misalnya, bayangkan Anda memiliki dua tingkat, satu yang memiliki rentang $0-$500 dan didiskon 10%, dan satu lagi yang memiliki rentang $501-$1.000 dan didiskon 20%. Jika total harga yang perlu Anda hitung diskonnya adalah $700, skrip mengalikan 500 USD pertama dengan 10% dan 200 USD sisanya dengan 20%, sehingga total diskonnya adalah 90 USD.

Untuk harga total tertentu, skrip melakukan perulangan melalui tingkat yang ditentukan dalam tabel harga bertingkat. Untuk setiap bagian dari total harga yang termasuk dalam tingkat, bagian tersebut dikalikan dengan nilai persentase yang terkait dengan tingkat tersebut. Hasilnya adalah jumlah penghitungan setiap tingkat.

Layanan Apps Script

Solusi ini menggunakan layanan berikut:

  • Layanan spreadsheet–Mengambil nilai yang diberikan dan menghitung bagian nilai yang akan dikalikan dengan diskon persentase setiap tingkat.

Prasyarat

Untuk menggunakan sampel ini, Anda memerlukan prasyarat berikut:

  • Akun Google (akun Google Workspace mungkin memerlukan persetujuan administrator).
  • Browser web dengan akses ke internet.

Menyiapkan skrip

Klik tombol di bawah untuk membuat salinan spreadsheet Fungsi kustom harga berjenjang. Project Apps Script untuk solusi ini dilampirkan ke spreadsheet.
Buat salinan

Jalankan skrip:

  1. Di spreadsheet yang Anda salin, tabel di baris 16 menampilkan contoh perhitungan harga untuk produk Software as a Service (SaaS).
  2. Untuk menghitung jumlah diskon, di sel C20, masukkan =tierPrice(C19,$B$3:$D$6). Harga akhir diperbarui di sel C21. Jika Anda berada di lokasi yang menggunakan koma desimal, Anda mungkin perlu memasukkan =tierPrice(C19;$B$3:$D$6) sebagai gantinya.

Meninjau kode

Untuk meninjau kode Apps Script untuk solusi ini, klik Lihat kode sumber di bawah:

Melihat kode sumber

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

Modifikasi

Anda dapat mengedit fungsi kustom sesering yang Anda inginkan agar sesuai dengan kebutuhan Anda. Di bawah ini adalah tambahan opsional untuk memuat ulang hasil fungsi kustom secara manual.

Memperbarui hasil yang di-cache

Tidak seperti fungsi bawaan, Google menyimpan fungsi kustom dalam cache untuk mengoptimalkan performa. Oleh karena itu, jika Anda mengubah sesuatu dalam fungsi kustom, seperti nilai yang sedang dihitung, perubahan tersebut mungkin tidak langsung memicu update. Untuk memuat ulang hasil fungsi secara manual, lakukan langkah-langkah berikut:

  1. Tambahkan kotak centang ke sel kosong dengan mengklik Sisipkan > Kotak centang.
  2. Tambahkan sel yang memiliki kotak centang sebagai parameter tambahan fungsi kustom. Misalnya, jika Anda menambahkan kotak centang ke sel D20, perbarui fungsi tierPrice() di sel C20 menjadi =tierPrice(C19,$B$3:$D$6,D20).
  3. Centang atau hapus centang pada kotak centang untuk memuat ulang hasil fungsi kustom.

Kontributor

Contoh ini dikelola oleh Google dengan bantuan Pakar Developer Google.

Langkah berikutnya