محاسبه تخفیف قیمت پلکانی

سطح کدنویسی : مبتدی
مدت زمان : ۱۰ دقیقه
نوع پروژه : تابع سفارشی

اهداف

  • بفهمید که راه حل چه کاری انجام می‌دهد.
  • درک کنید که سرویس‌های Apps Script در این راهکار چه کاری انجام می‌دهند.
  • اسکریپت را تنظیم کنید.
  • اسکریپت را اجرا کنید.

درباره این راهکار

اگر یک سیستم قیمت‌گذاری پلکانی برای مشتریان خود ارائه می‌دهید، این تابع سفارشی محاسبه مبالغ تخفیف برای قیمت‌های شما را آسان‌تر می‌کند.

اگرچه می‌توانید از تابع داخلی SUMPRODUCT برای محاسبه قیمت‌گذاری پلکانی استفاده کنید، اما استفاده از SUMPRODUCT پیچیده‌تر و انعطاف‌پذیری کمتری نسبت به تابع سفارشی این راه‌حل دارد.

تصویر نمونه قیمت‌گذاری لایه‌ای

چگونه کار می‌کند؟

مدل قیمت‌گذاری پلکانی به این معنی است که هزینه کالاها یا خدمات بر اساس مقدار خریداری شده کاهش می‌یابد.

برای مثال، تصور کنید دو سطح دارید، یکی که از ۰ تا ۵۰۰ دلار متغیر است و ۱۰٪ تخفیف دارد و دیگری که از ۵۰۱ تا ۱۰۰۰ دلار متغیر است و ۲۰٪ تخفیف دارد. اگر قیمت کل مورد نیاز برای محاسبه تخفیف ۷۰۰ دلار باشد، اسکریپت ۵۰۰ دلار اول را در ۱۰٪ و ۲۰۰ دلار باقی‌مانده را در ۲۰٪ ضرب می‌کند تا تخفیف کل ۹۰ دلار شود.

برای یک قیمت کل مشخص، اسکریپت در ردیف‌های مشخص شده در جدول قیمت‌گذاری ردیف‌ها می‌چرخد. برای هر بخش از قیمت کل که در یک ردیف قرار می‌گیرد، آن بخش در مقدار درصد مربوط به ردیف ضرب می‌شود. نتیجه، مجموع محاسبات هر ردیف است.

سرویس‌های اسکریپت برنامه‌ها

این راهکار از سرویس زیر استفاده می‌کند:

  • سرویس صفحه گسترده - مقدار داده شده را دریافت کرده و محاسبه می‌کند که چه بخشی از مقدار باید در درصد تخفیف هر سطح ضرب شود.

پیش‌نیازها

برای استفاده از این نمونه، به پیش‌نیازهای زیر نیاز دارید:

  • یک حساب گوگل (حساب‌های کاربری گوگل ورک‌اسپیس ممکن است نیاز به تأیید مدیر داشته باشند).
  • یک مرورگر وب با دسترسی به اینترنت.

اسکریپت را تنظیم کنید

برای ایجاد یک کپی از صفحه گسترده تابع سفارشی قیمت‌گذاری Tier ، روی دکمه زیر کلیک کنید. پروژه Apps Script برای این راهکار به صفحه گسترده پیوست شده است.
یک کپی تهیه کنید

اسکریپت را اجرا کنید

  1. در صفحه گسترده کپی شده شما، جدول ردیف ۱۶ نمونه‌ای از محاسبه قیمت برای یک محصول «نرم‌افزار به عنوان سرویس» (SaaS) را نشان می‌دهد.
  2. برای محاسبه مبلغ تخفیف، در سلول C20 =tierPrice(C19,$B$3:$D$6) را وارد کنید. قیمت نهایی در سلول C21 به‌روزرسانی می‌شود. اگر در مکانی هستید که از کامای اعشاری استفاده می‌شود، ممکن است لازم باشد به جای آن =tierPrice(C19;$B$3:$D$6) وارد کنید.

کد را مرور کنید

برای بررسی کد Apps Script برای این راهکار، روی مشاهده کد منبع در زیر کلیک کنید:

مشاهده کد منبع

کد.gs

راهکارها/توابع-سفارشی/قیمت‌گذاری-رده/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;
}

اصلاحات

شما می‌توانید تابع سفارشی را تا جایی که می‌خواهید متناسب با نیازهایتان ویرایش کنید. در زیر یک گزینه اختیاری برای به‌روزرسانی دستی نتایج تابع سفارشی وجود دارد.

نتایج ذخیره شده در حافظه پنهان را تازه کنید

برخلاف توابع داخلی، گوگل توابع سفارشی را برای بهینه‌سازی عملکرد، کش می‌کند. بنابراین، اگر چیزی را در تابع سفارشی خود تغییر دهید، مانند مقداری که در حال محاسبه است، ممکن است بلافاصله به‌روزرسانی نشود. برای به‌روزرسانی دستی نتیجه تابع، مراحل زیر را انجام دهید:

  1. با کلیک روی Insert > Checkbox ، یک چک‌باکس به یک سلول خالی اضافه کنید.
  2. سلولی که کادر انتخاب (checkbox) در آن قرار دارد را به عنوان پارامتر اضافی تابع سفارشی اضافه کنید. برای مثال، اگر یک کادر انتخاب به سلول D20 اضافه می‌کنید، تابع tierPrice() در سلول C20 را به صورت =tierPrice(C19,$B$3:$D$6,D20) به‌روزرسانی کنید.
  3. برای به‌روزرسانی نتایج تابع سفارشی، کادر انتخاب را علامت بزنید یا علامت آن را بردارید.

مشارکت‌کنندگان

این نمونه توسط گوگل و با کمک متخصصان توسعه‌دهنده گوگل نگهداری می‌شود.

مراحل بعدی