গুগল শীটে কাস্টম ফাংশন

গুগল শিটস শত শত বিল্ট-ইন ফাংশন অফার করে যেমন AVERAGE , SUM , এবং VLOOKUP । যখন এগুলো আপনার প্রয়োজনের জন্য যথেষ্ট না হয়, তখন আপনি কাস্টম ফাংশন লেখার জন্য অ্যাপস স্ক্রিপ্ট ব্যবহার করতে পারেন এবং তারপর একটি বিল্ট-ইন ফাংশনের মতো শিটসে ব্যবহার করতে পারেন।

কাস্টম ফাংশনের উদাহরণের জন্য, নিম্নলিখিত টিউটোরিয়ালগুলি দেখুন:

শুরু করা

কাস্টম ফাংশনগুলি স্ট্যান্ডার্ড জাভাস্ক্রিপ্ট ব্যবহার করে তৈরি করা হয়। আপনি যদি জাভাস্ক্রিপ্টে নতুন হন, তাহলে কোডেক্যাডেমি নতুনদের জন্য একটি কোর্স অফার করে। এই কোর্সটি গুগল দ্বারা তৈরি করা হয়নি এবং এর সাথে সম্পর্কিতও নয়।

এখানে DOUBLE নামে একটি কাস্টম ফাংশন রয়েছে, যা একটি ইনপুট মানকে 2 দিয়ে গুণ করে:

/**
 * Multiplies an input value by 2.
 * @param {number} input The number to double.
 * @return The input multiplied by 2.
 * @customfunction
*/
function DOUBLE(input) {
  return input * 2;
}

যদি আপনি জাভাস্ক্রিপ্ট লিখতে না জানেন এবং শেখার সময় না পান, তাহলে Google Workspace অ্যাড-অন স্টোরটি দেখুন এবং দেখুন যে অন্য কেউ ইতিমধ্যেই আপনার প্রয়োজনীয় কাস্টম ফাংশনটি তৈরি করে ফেলেছে কিনা।

একটি কাস্টম ফাংশন তৈরি করুন

একটি কাস্টম ফাংশন লিখতে:

  1. Sheets-এ একটি স্প্রেডশিট তৈরি করুন বা খুলুন।
  2. মেনু আইটেম এক্সটেনশন > অ্যাপস স্ক্রিপ্ট নির্বাচন করুন।
  3. স্ক্রিপ্ট এডিটরে যেকোনো কোড মুছে ফেলুন। আগে দেখানো DOUBLE ফাংশনের জন্য, কোডটি কপি করে স্ক্রিপ্ট এডিটরে পেস্ট করুন।
  4. উপরে, সংরক্ষণ এ ক্লিক করুন।

এখন আপনি কাস্টম ফাংশনটি ব্যবহার করতে পারেন।

Google Workspace Marketplace থেকে একটি কাস্টম ফাংশন পান

Google Workspace Marketplace Sheets এর জন্য Google Workspace অ্যাড-অন হিসেবে বেশ কিছু কাস্টম ফাংশন অফার করে। এই অ্যাড-অনগুলি ব্যবহার বা অন্বেষণ করতে:

  1. Sheets-এ একটি স্প্রেডশিট তৈরি করুন বা খুলুন।
  2. উপরে, অ্যাড-অন > অ্যাড-অন পান ক্লিক করুন।
  3. গুগল ওয়ার্কস্পেস মার্কেটপ্লেসটি খোলার পরে, উপরের ডানদিকে কোণায় অনুসন্ধান বাক্সে ক্লিক করুন।
  4. "custom function" টাইপ করুন এবং এন্টার টিপুন।
  5. যদি আপনি এমন কোনও কাস্টম ফাংশন অ্যাড-অন খুঁজে পান যা আপনার আগ্রহের, তাহলে এটি ইনস্টল করতে ইনস্টল করুন এ ক্লিক করুন।
  6. একটি ডায়ালগ বক্সে আপনাকে বলা হতে পারে যে অ্যাড-অনটির অনুমোদন প্রয়োজন। যদি তাই হয়, তাহলে নোটিশটি মনোযোগ সহকারে পড়ুন, তারপর Allow এ ক্লিক করুন।
  7. অ্যাড-অনটি স্প্রেডশিটে উপলব্ধ হবে। অন্য স্প্রেডশিটে অ্যাড-অনটি ব্যবহার করতে, অন্য স্প্রেডশিটটি খুলুন এবং উপরে, অ্যাড-অন > অ্যাড-অন পরিচালনা করুন এ ক্লিক করুন। আপনি যে অ্যাড-অনটি ব্যবহার করতে চান তা খুঁজুন এবং বিকল্পগুলি > এই নথিতে ব্যবহার করুন এ ক্লিক করুন।

একটি কাস্টম ফাংশন ব্যবহার করুন

একবার আপনি একটি কাস্টম ফাংশন লিখে ফেললে অথবা Google Workspace Marketplace থেকে একটি ইনস্টল করলে, এটি একটি বিল্ট-ইন ফাংশনের মতোই ব্যবহৃত হবে:

  1. আপনি যে ঘরে ফাংশনটি ব্যবহার করতে চান সেখানে ক্লিক করুন।
  2. একটি সমান চিহ্ন ( = ) টাইপ করুন, তারপর ফাংশনের নাম এবং যেকোনো ইনপুট মান লিখুন — উদাহরণস্বরূপ, =DOUBLE(A1) — এবং এন্টার টিপুন।
  3. ঘরটি মুহূর্তের জন্য Loading... প্রদর্শন করে, তারপর ফলাফল প্রদান করে।

কাস্টম ফাংশনের জন্য নির্দেশিকা

আপনার নিজস্ব কাস্টম ফাংশন লেখার আগে, কিছু নির্দেশিকা জানা উচিত।

ফাংশন নামকরণ

জাভাস্ক্রিপ্ট ফাংশনের নামকরণের জন্য স্ট্যান্ডার্ড কনভেনশন ছাড়াও, নিম্নলিখিত বিষয়গুলি সম্পর্কে সচেতন থাকুন:

  • একটি কাস্টম ফাংশনের নাম অবশ্যই SUM() এর মতো বিল্ট-ইন ফাংশনের নাম থেকে আলাদা হতে হবে।
  • একটি কাস্টম ফাংশনের নাম আন্ডারস্কোর ( _ ) দিয়ে শেষ হতে পারে না, যা অ্যাপস স্ক্রিপ্টে একটি ব্যক্তিগত ফাংশনকে নির্দেশ করে।
  • একটি কাস্টম ফাংশনের নাম সিনট্যাক্স function myFunction() দিয়ে ঘোষণা করতে হবে, var myFunction = new Function() দিয়ে নয়।
  • বড় হাতের অক্ষর কোন ব্যাপার না, যদিও স্প্রেডশিট ফাংশনের নাম ঐতিহ্যগতভাবে বড় হাতের অক্ষরে লেখা হয়।

যুক্তি

একটি বিল্ট-ইন ফাংশনের মতো, একটি কাস্টম ফাংশন আর্গুমেন্টগুলিকে ইনপুট মান হিসেবে নিতে পারে:

  • যদি আপনি আপনার ফাংশনটিকে একটি একক ঘরের রেফারেন্স দিয়ে আর্গুমেন্ট হিসেবে ডাকেন (যেমন =DOUBLE(A1) ), তাহলে আর্গুমেন্টটি হল ঘরের মান।
  • যদি আপনি আপনার ফাংশনকে বিভিন্ন কোষের রেফারেন্স সহ একটি আর্গুমেন্ট হিসেবে ডাকেন (যেমন =DOUBLE(A1:B10) ), তাহলে আর্গুমেন্টটি হল কোষের মানের একটি দ্বি-মাত্রিক অ্যারে। উদাহরণস্বরূপ, নিম্নলিখিত স্ক্রিনশটে, =DOUBLE(A1:B2) এর আর্গুমেন্টগুলিকে Apps Script দ্বারা double([[1,3],[2,4]]) হিসাবে ব্যাখ্যা করা হয়েছে। মনে রাখবেন যে পূর্বে বর্ণিত DOUBLE এর নমুনা কোডটি একটি অ্যারেকে ইনপুট হিসাবে গ্রহণ করার জন্য পরিবর্তন করতে হবে।


  • কাস্টম ফাংশন আর্গুমেন্ট অবশ্যই ডিটারমিনিস্টিক হতে হবে। অর্থাৎ, বিল্ট-ইন স্প্রেডশিট ফাংশন যা প্রতিবার গণনা করার সময় ভিন্ন ফলাফল প্রদান করে — যেমন NOW() বা RAND() — সেগুলিকে কাস্টম ফাংশনে আর্গুমেন্ট হিসেবে অনুমোদিত নয়। যদি একটি কাস্টম ফাংশন এই অস্থির বিল্ট-ইন ফাংশনগুলির একটির উপর ভিত্তি করে একটি মান প্রদান করার চেষ্টা করে, তাহলে এটি অনির্দিষ্টকালের জন্য Loading... প্রদর্শন করে।

  • পুনঃগণনা শুরু করতে, আপনাকে অবশ্যই একটি রেফারেন্সড সেল বা সেল রেঞ্জ সরাসরি কাস্টম ফাংশনে আর্গুমেন্ট হিসেবে পাস করতে হবে। অন্যথায়, আপনি ফাংশনটি সম্পাদনা না করা পর্যন্ত অথবা একটি রেফারেন্সড সেলের মান পরিবর্তন না করা পর্যন্ত কাস্টম ফাংশনটি পুনরায় গণনা করবে না। যদি আপনি কাস্টম ফাংশনে getValue পদ্ধতি ব্যবহার করেন, তাহলে মনে রাখবেন যে রেফারেন্সড রেঞ্জটি সরাসরি কাস্টম ফাংশনে আর্গুমেন্ট হিসেবে পাস করা হয় না।

মান ফেরত দিন

প্রতিটি কাস্টম ফাংশনকে প্রদর্শনের জন্য একটি মান প্রদান করতে হবে, যেমন:

  • যদি একটি কাস্টম ফাংশন একটি মান প্রদান করে, তাহলে মানটি সেই কক্ষে প্রদর্শিত হবে যেখান থেকে ফাংশনটি কল করা হয়েছিল।
  • যদি একটি কাস্টম ফাংশন দ্বি-মাত্রিক মানের অ্যারে প্রদান করে, তাহলে যতক্ষণ পর্যন্ত ঐ ঘরগুলি খালি থাকে ততক্ষণ পর্যন্ত মানগুলি সংলগ্ন কোষগুলিতে ওভারফ্লো হয়। যদি এর ফলে অ্যারেটি বিদ্যমান কোষের বিষয়বস্তুগুলিকে ওভাররাইট করে, তাহলে কাস্টম ফাংশনটি পরিবর্তে একটি ত্রুটি ছুঁড়ে দেয়। উদাহরণস্বরূপ, কাস্টম ফাংশন অপ্টিমাইজ করার বিভাগটি দেখুন।
  • একটি কাস্টম ফাংশন যেসব কোষে মান প্রদান করে সেগুলি ছাড়া অন্য কোষগুলিকে প্রভাবিত করতে পারে না। অন্য কথায়, একটি কাস্টম ফাংশন ইচ্ছামত কোষ সম্পাদনা করতে পারে না, শুধুমাত্র যে কোষগুলি থেকে এটি ডাকা হয় এবং তাদের সংলগ্ন কোষগুলি। ইচ্ছামত কোষ সম্পাদনা করতে, পরিবর্তে একটি ফাংশন চালানোর জন্য একটি কাস্টম মেনু ব্যবহার করুন।
  • একটি কাস্টম ফাংশন কল অবশ্যই 30 সেকেন্ডের মধ্যে ফিরে আসতে হবে। যদি তা না হয়, তাহলে সেলটি #ERROR! প্রদর্শন করবে এবং সেল নোটটি Exceeded maximum execution time (line 0).

ডেটা টাইপ

শীট ডেটার প্রকৃতির উপর নির্ভর করে বিভিন্ন ফর্ম্যাটে ডেটা সংরক্ষণ করে। যখন এই মানগুলি কাস্টম ফাংশনে ব্যবহার করা হয়, তখন অ্যাপস স্ক্রিপ্ট এগুলিকে জাভাস্ক্রিপ্টে উপযুক্ত ডেটা টাইপ হিসাবে বিবেচনা করে। এগুলি হল বিভ্রান্তির সবচেয়ে সাধারণ ক্ষেত্র:

  • শীটগুলিতে সময় এবং তারিখগুলি অ্যাপস স্ক্রিপ্টে তারিখের বস্তুতে পরিণত হয়। যদি স্প্রেডশিট এবং স্ক্রিপ্ট বিভিন্ন সময় অঞ্চল ব্যবহার করে (একটি বিরল সমস্যা), কাস্টম ফাংশনটিকে ক্ষতিপূরণ দিতে হবে।
  • শীটগুলিতে সময়কালের মানগুলিও Date বস্তুতে পরিণত হয়, তবে তাদের সাথে কাজ করা জটিল হতে পারে
  • অ্যাপস স্ক্রিপ্টে শীটগুলিতে শতাংশের মান দশমিক সংখ্যায় পরিণত হয়। উদাহরণস্বরূপ, 10% মান সহ একটি ঘর অ্যাপস স্ক্রিপ্টে 0.1 হয়ে যায়।

স্বয়ংক্রিয়ভাবে সম্পন্ন করুন

শীটগুলি কাস্টম ফাংশনের জন্য স্বয়ংসম্পূর্ণতা সমর্থন করে, ঠিক যেমন বিল্ট-ইন ফাংশনের জন্য। আপনি যখন একটি ঘরে একটি ফাংশনের নাম টাইপ করেন, তখন আপনি বিল্ট-ইন এবং কাস্টম ফাংশনের একটি তালিকা দেখতে পাবেন যা আপনার প্রবেশ করানো জিনিসের সাথে মেলে।

কাস্টম ফাংশনগুলি এই তালিকায় প্রদর্শিত হবে যদি তাদের স্ক্রিপ্টে একটি JSDoc @customfunction ট্যাগ থাকে, যেমনটি DOUBLE() উদাহরণে দেখানো হয়েছে।

/**
 * Multiplies the input value by 2.
 *
 * @param {number} input The value to multiply.
 * @return {number} The input multiplied by 2.
 * @customfunction
 */
function DOUBLE(input) {
  return input * 2;
}

উন্নত

এই বিভাগে উন্নত কাস্টম ফাংশন বিষয়গুলি অন্তর্ভুক্ত করা হয়েছে।

গুগল অ্যাপস স্ক্রিপ্ট পরিষেবা ব্যবহার করুন

কাস্টম ফাংশনগুলি আরও জটিল কাজ সম্পাদনের জন্য নির্দিষ্ট অ্যাপস স্ক্রিপ্ট পরিষেবাগুলিকে কল করতে পারে। উদাহরণস্বরূপ, একটি কাস্টম ফাংশন একটি ইংরেজি বাক্যাংশকে স্প্যানিশ ভাষায় অনুবাদ করার জন্য ভাষা পরিষেবাকে কল করতে পারে।

অন্যান্য বেশিরভাগ ধরণের অ্যাপ স্ক্রিপ্টের বিপরীতে, কাস্টম ফাংশনগুলি কখনই ব্যবহারকারীদের ব্যক্তিগত ডেটাতে অ্যাক্সেস অনুমোদন করতে বলে না। ফলস্বরূপ, তারা কেবল সেই পরিষেবাগুলিতে কল করতে পারে যাদের ব্যক্তিগত ডেটাতে অ্যাক্সেস নেই, বিশেষ করে নিম্নলিখিতগুলি:

সমর্থিত পরিষেবা মন্তব্য
ক্যাশে কাজ করে, কিন্তু কাস্টম ফাংশনে বিশেষভাবে কার্যকর নয়
এইচটিএমএল HTML তৈরি করতে পারে, কিন্তু প্রদর্শন করতে পারে না (খুব কমই কার্যকর)
জেডিবিসি
ভাষা
তালা কাজ করে, কিন্তু কাস্টম ফাংশনে বিশেষভাবে কার্যকর নয়
মানচিত্র দিকনির্দেশনা গণনা করতে পারে, কিন্তু মানচিত্র প্রদর্শন করতে পারে না
বৈশিষ্ট্য getUserProperties() শুধুমাত্র স্প্রেডশিট মালিকের বৈশিষ্ট্য পায়। স্প্রেডশিট সম্পাদকরা একটি কাস্টম ফাংশনে ব্যবহারকারীর বৈশিষ্ট্য সেট করতে পারে না।
স্প্রেডশিট শুধুমাত্র পঠনযোগ্য (বেশিরভাগ get*() পদ্ধতি ব্যবহার করতে পারে, কিন্তু set*() নয়)।
অন্যান্য স্প্রেডশিট ( SpreadsheetApp.openById() অথবা SpreadsheetApp.openByUrl() ) খুলতে পারছি না।
URL ফেচ URL গুলি এনে ওয়েবে রিসোর্স অ্যাক্সেস করুন।
উপযোগিতা
এক্সএমএল

যদি আপনার কাস্টম ফাংশনটি ত্রুটি বার্তাটি দেয় যে You do not have permission to call X service. , পরিষেবাটির জন্য ব্যবহারকারীর অনুমোদন প্রয়োজন এবং তাই এটি একটি কাস্টম ফাংশনে ব্যবহার করা যাবে না।

পূর্ববর্তী তালিকার পরিষেবাগুলি ছাড়া অন্য কোনও পরিষেবা ব্যবহার করতে, একটি কাস্টম মেনু তৈরি করুন যা একটি কাস্টম ফাংশন লেখার পরিবর্তে একটি অ্যাপস স্ক্রিপ্ট ফাংশন চালায়। মেনু থেকে ট্রিগার করা একটি ফাংশন প্রয়োজনে ব্যবহারকারীর কাছ থেকে অনুমোদন চায় এবং ফলস্বরূপ সমস্ত অ্যাপস স্ক্রিপ্ট পরিষেবা ব্যবহার করতে পারে।

কাস্টম ফাংশন শেয়ার করুন

কাস্টম ফাংশনগুলি যে স্প্রেডশিটে তৈরি করা হয়েছিল তার সাথে আবদ্ধ হয়ে শুরু হয়। এর অর্থ হল একটি স্প্রেডশিটে লেখা একটি কাস্টম ফাংশন অন্য স্প্রেডশিটে ব্যবহার করা যাবে না যদি না আপনি নিম্নলিখিত পদ্ধতিগুলির মধ্যে একটি ব্যবহার করেন:

  • স্ক্রিপ্ট এডিটর খুলতে এক্সটেনশন > অ্যাপস স্ক্রিপ্টে ক্লিক করুন, তারপর মূল স্প্রেডশিট থেকে স্ক্রিপ্ট টেক্সটটি কপি করুন এবং অন্য স্প্রেডশিটের স্ক্রিপ্ট এডিটরে পেস্ট করুন।
  • ফাইল > একটি অনুলিপি তৈরি করুন ক্লিক করে কাস্টম ফাংশন ধারণকারী স্প্রেডশিটের একটি অনুলিপি তৈরি করুন। যখন একটি স্প্রেডশিট অনুলিপি করা হয়, তখন এর সাথে সংযুক্ত যেকোনো স্ক্রিপ্টও অনুলিপি করা হয়। যাদের স্প্রেডশিটে অ্যাক্সেস আছে তারা স্ক্রিপ্টটি অনুলিপি করতে পারেন। (যাদের সহযোগীদের শুধুমাত্র দেখার অ্যাক্সেস আছে তারা মূল স্প্রেডশিটে স্ক্রিপ্ট সম্পাদক খুলতে পারবেন না। তবে, যখন তারা একটি অনুলিপি তৈরি করেন, তখন তারা অনুলিপিটির মালিক হন এবং স্ক্রিপ্টটি দেখতে পারেন।)
  • স্ক্রিপ্টটি শীটস এডিটর অ্যাড-অন হিসেবে প্রকাশ করুন।

সমস্ত কন্টেইনার-বাউন্ড স্ক্রিপ্ট তাদের কন্টেইনারের মতো একই অ্যাক্সেস তালিকা ভাগ করে। এর অর্থ হল যে স্প্রেডশিট সম্পাদনা করার অনুমতিপ্রাপ্ত যে কেউ এর সাথে সংযুক্ত যেকোনো অ্যাপস স্ক্রিপ্ট কোডও সম্পাদনা করতে পারবেন। আরও তথ্যের জন্য, বাউন্ড স্ক্রিপ্টগুলিতে অ্যাক্সেস দেখুন।

অপ্টিমাইজেশন

প্রতিবার যখন কোনও স্প্রেডশিটে কোনও কাস্টম ফাংশন ব্যবহার করা হয়, তখন Sheets অ্যাপস স্ক্রিপ্ট সার্ভারে একটি পৃথক কল করে। যদি আপনার স্প্রেডশিটে কয়েক ডজন (অথবা শত শত, অথবা হাজার হাজার!) কাস্টম ফাংশন কল থাকে, তাহলে এই প্রক্রিয়াটি ধীর হতে পারে। অনেক বা জটিল কাস্টম ফাংশন সহ কিছু প্রকল্পের কার্য সম্পাদনে সাময়িক বিলম্ব হতে পারে।

ফলস্বরূপ, যদি আপনি একটি বৃহৎ পরিসরে ডেটাতে একাধিকবার একটি কাস্টম ফাংশন ব্যবহার করার পরিকল্পনা করেন, তাহলে ফাংশনটি এমনভাবে পরিবর্তন করার কথা বিবেচনা করুন যাতে এটি একটি দ্বি-মাত্রিক অ্যারের আকারে ইনপুট হিসাবে একটি পরিসর গ্রহণ করে, তারপর একটি দ্বি-মাত্রিক অ্যারে প্রদান করে যা উপযুক্ত কোষগুলিতে ওভারফ্লো করতে পারে।

উদাহরণস্বরূপ, পূর্বে দেখানো DOUBLE() ফাংশনটি নিম্নরূপে একটি একক কোষ বা কোষের পরিসর গ্রহণ করার জন্য পুনরায় লেখা যেতে পারে:

/**
 * Multiplies the input value by 2.
 *
 * @param {number|Array<Array<number>>} input The value or range of cells
 *     to multiply.
 * @return The input multiplied by 2.
 * @customfunction
 */
function DOUBLE(input) {
  return Array.isArray(input) ?
      input.map(row => row.map(cell => cell * 2)) :
      input * 2;
}

এই পদ্ধতিটি জাভাস্ক্রিপ্টের দ্বি-মাত্রিক অ্যারের কোষে জাভাস্ক্রিপ্টের Array অবজেক্টের ম্যাপ পদ্ধতি ব্যবহার করে প্রতিটি সারি পায়, তারপর প্রতিটি সারির জন্য, এটি প্রতিটি কোষের মান দ্বিগুণ করার জন্য আবার map ব্যবহার করে। এটি একটি দ্বি-মাত্রিক অ্যারে প্রদান করে যার ফলাফল থাকে। এইভাবে, আপনি কেবল একবার DOUBLE কল করতে পারেন কিন্তু এটিকে একসাথে অনেকগুলি কোষের জন্য গণনা করতে পারেন, যেমনটি নিম্নলিখিত স্ক্রিনশটে দেখানো হয়েছে। আপনি map কলের পরিবর্তে নেস্টেড if স্টেটমেন্ট দিয়ে একই জিনিস সম্পন্ন করতে পারেন।

একইভাবে, নিম্নলিখিত কাস্টম ফাংশনটি দক্ষতার সাথে ইন্টারনেট থেকে লাইভ কন্টেন্ট আনে এবং একটি দ্বি-মাত্রিক অ্যারে ব্যবহার করে শুধুমাত্র একটি ফাংশন কলের মাধ্যমে দুটি কলামের ফলাফল প্রদর্শন করে। যদি প্রতিটি সেলের নিজস্ব ফাংশন কলের প্রয়োজন হয়, তাহলে অপারেশনটি যথেষ্ট বেশি সময় নেবে, কারণ অ্যাপস স্ক্রিপ্ট সার্ভারকে প্রতিবার XML ফিড ডাউনলোড এবং পার্স করতে হবে।

/**
 * Show the title and date for the first page of posts on the
 * Developer blog.
 *
 * @return Two columns of data representing posts on the
 *     Developer blog.
 * @customfunction
 */
function getBlogPosts() {
  var array = [];
  var url = 'https://gsuite-developers.googleblog.com/atom.xml';
  var xml = UrlFetchApp.fetch(url).getContentText();
  var document = XmlService.parse(xml);
  var root = document.getRootElement();
  var atom = XmlService.getNamespace('http://www.w3.org/2005/Atom');
  var entries = document.getRootElement().getChildren('entry', atom);
  for (var i = 0; i < entries.length; i++) {
    var title = entries[i].getChild('title', atom).getText();
    var date = entries[i].getChild('published', atom).getValue();
    array.push([title, date]);
  }
  return array;
}

এই কৌশলগুলি প্রায় যেকোনো কাস্টম ফাংশনে প্রয়োগ করা যেতে পারে যা একটি স্প্রেডশিট জুড়ে বারবার ব্যবহৃত হয়, যদিও বাস্তবায়নের বিবরণ ফাংশনের আচরণের উপর নির্ভর করে পরিবর্তিত হয়।