اصول اسکریپت برنامه‌ها با Google Sheets شماره 1: ماکروها و توابع سفارشی

1. به Apps Script خوش آمدید

Apps Script چیست؟

Apps Script یک پلت فرم توسعه سریع برنامه است که به شما امکان خودکارسازی، سفارشی سازی و گسترش تجربه Google Workspace را می دهد. با Apps Script، می‌توانید با ساده‌سازی کارهای سخت یا پیچیده در Google Workspace در زمان و تلاش خود صرفه‌جویی کنید.

ویژگی های Apps Script شامل موارد زیر است:

  • سرویس‌های داخلی Apps Script به شما امکان می‌دهند داده‌های برنامه Google Workspace خود را با اسکریپت بخوانید، به‌روزرسانی و دستکاری کنید.
  • می توانید اسکریپت ها را با استفاده از ویرایشگر کد درون مرورگر Apps Script ایجاد کنید—نیازی به نصب یا اجرای نرم افزار توسعه کد نیست.
  • می‌توانید رابط‌های کاربری برای ویرایشگرهای Google Workspace طراحی کنید که به شما امکان می‌دهد اسکریپت‌ها را مستقیماً از آن ویرایشگرها با استفاده از آیتم‌های منو، دیالوگ‌ها و نوارهای کناری فعال کنید.

این فهرست پخش برنامه‌های کاربردی مبانی برنامه‌ها با صفحه کد لابلای Google Sheets اصول اولیه اسکریپت برنامه‌ها و نحوه استفاده از آن برای بهبود تجربه کاربرگ‌نگار Google را آموزش می‌دهد. این نرم افزار کد روی آموزش اصول اولیه اسکریپت برنامه ها تمرکز دارد.

سرویس صفحه گسترده

برای صرفه جویی در زمان و تلاش می توانید از Apps Script برای گسترش Google Sheets استفاده کنید. Apps Script سرویس صفحه‌گسترده را ارائه می‌کند که به اسکریپت‌ها اجازه می‌دهد با فایل‌های Google Sheet و داده‌های موجود در آنها تعامل داشته باشند. می‌توانید از این سرویس برای خودکارسازی وظایف رایج صفحه‌گسترده زیر استفاده کنید:

  • یک صفحه گسترده ایجاد یا اصلاح کنید.
  • داده های سلولی، فرمول ها و قالب بندی را بخوانید و به روز کنید.
  • دکمه ها و منوهای سفارشی ایجاد کنید.
  • داده ها را از سایر برنامه های Google یا منابع شخص ثالث وارد و صادر کنید.
  • دسترسی به صفحات گسترده را به اشتراک بگذارید و کنترل کنید.

چیزی که یاد خواهید گرفت

این لیست پخش همه موضوعاتی را که برای شروع استفاده از Apps Script با Google Sheets نیاز دارید را پوشش می دهد:

  1. ماکروها و توابع سفارشی
  2. صفحات گسترده، برگه ها و محدوده ها
  3. کار با داده ها
  4. قالب بندی داده ها
  5. نمودار و ارائه داده در اسلایدها

کدهای موجود در این لیست پخش قرار است به ترتیب خوانده شوند، بنابراین با این یکی شروع کنید و برای بهترین تجربه یادگیری آنها را به ترتیب تکمیل کنید.

برای کسب اطلاعات بیشتر در مورد محتویات این Codelab به بخش بعدی بروید.

2. مقدمه

به اولین لبه کد این لیست پخش خوش آمدید. در این لبه کد، اصول اولیه استفاده از Apps Script با Google Sheets را خواهید آموخت. به طور خاص، این کد لبه روی دو مفهوم کلیدی تمرکز دارد: ماکروها و توابع سفارشی .

ماکرو مجموعه ای از اقدامات ثبت شده در Google Sheets است. پس از ضبط، می توانید یک ماکرو را فعال کنید تا بعداً آن اقدامات را با یک آیتم منو یا کلید میانبر تکرار کنید. می‌توانید هم در Google Sheets و هم در ویرایشگر کد Apps Script ماکروهای خود را ایجاد و به‌روزرسانی کنید.

در ویرایشگر کد Apps Script، می‌توانید توابع سفارشی نیز ایجاد کنید. مشابه عملکردهای داخلی ارائه شده توسط Sheets (مانند SUM یا AVERAGE )، می‌توانید از Apps Script برای نوشتن توابع سفارشی خود برای عملیات ساده و خاص (مانند تبدیل یا الحاق رشته‌ها) استفاده کنید. پس از ایجاد، می‌توانید این توابع را مانند یک تابع داخلی در Sheets فراخوانی کنید. از توابع سفارشی نیز می توان در فرمول های سلولی که می نویسید استفاده کرد و در صورت نیاز آنها را با سایر توابع ترکیب کرد.

زیر را بخوانید تا بدانید که این کد لبه شامل چه مفاهیم و الزاماتی است.

چیزی که یاد خواهید گرفت

  • نحوه ایجاد یک اسکریپت برای Google Sheets
  • نحوه پیمایش در ویرایشگر Apps Script.
  • نحوه ایجاد و به روز رسانی ماکروها
  • چگونه اولین تابع سفارشی Sheets خود را ایجاد کنیم.

آنچه شما نیاز دارید

شما با معرفی تمام شده اید. برای شروع کار با ماکروها به بخش بعدی بروید.

3. یک ماکرو در Sheets ایجاد کنید

به طور معمول، هنگام کار در صفحات گسترده، می توانید وارد حلقه ای از اقدامات تکراری شوید - کپی کردن مقادیر سلول، قالب بندی، ایجاد فرمول ها، و غیره - که ممکن است خسته کننده و منجر به اشتباه شود. برای خودکار کردن اقدامات مکرر، Google Sheets ماکروها را ارائه می دهد. ماکروها به شما امکان می دهند مجموعه ای از اقدامات را در یک برگه «ثبت» کنید. با یک ماکرو ضبط شده، می توانید با فشار دادن کلید میانبر ساده، همان اقدامات را در جای دیگری از صفحه گسترده تکرار کنید.

در این بخش، نحوه ساخت ماکرو در Sheets را یاد خواهید گرفت. در بخش بعدی، نحوه ساخت ماکروها با استفاده از Apps Script را خواهید دید.

قبل از اینکه شروع کنی

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

5b8aded1bb349ecf.png

یک کپی از صفحه‌گسترده نمونه برای استفاده در پوشه Google Drive شما قرار می‌گیرد و نام آن «کپی از 10 فیلم برتر (2018) است.

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

اکنون که صفحه گسترده ای برای کار با آن دارید، می توانید یک ماکرو را در Google Sheets ضبط کنید. برای این مثال، یک ماکرو ایجاد می‌کنید که یک ردیف سرصفحه را برای داده‌های شما قالب‌بندی می‌کند. فقط این مراحل را دنبال کنید:

  1. روی سلول A1 کلیک کنید تا مکان نما در ردیف قرار گیرد. این ردیف سرصفحه شماست.
  2. در منو، Extensions > Macros > Record Macros را انتخاب کنید.

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

  1. در گفتگوی ماکرو، Relative reference را انتخاب کنید.

c59f2f12317352d2.gif

  1. ردیف 1 را انتخاب کنید.

1d782ee30c66a02b.gif

  1. رنگ پر رنگ ردیف بالا را از سفید به سرخابی تیره رنگ آمیزی کنید 3 .

f7e7abaf76e338c7.png

  1. رنگ متن ردیف بالا را از سیاه به سفید تغییر دهید.

d5e630acbe83148.png

  1. برای پررنگ کردن متن، Ctrl+B (یا Cmd+B در macOS) را فشار دهید.
  2. برای ثابت کردن ردیف بالا، View > Freeze > 1 row را انتخاب کنید.

97cb244ffebe8953.png

  1. روی Save در گفتگوی ماکرو کلیک کنید. یک گفتگوی جدید از شما می خواهد که ماکرو را نام ببرید. نام "Header" را وارد کنید و روی ذخیره کلیک کنید.

b4610a54340da518.gif

با استفاده از رابط کاربری Sheets، یک ماکرو تخصصی برای قالب‌بندی هدرها ساخته‌اید.

4ed7fbed18ea3681.png

ماکرو خود را فعال کنید

با دنبال کردن این دستورالعمل‌ها می‌توانید ماکرو جدید خود را در Sheets اعمال کنید:

  1. برای ایجاد یک برگه، روی Add Sheet کلیک کنید 9c9b0c19bf317e7f.png .

927c012b4e11475b.png

  1. در برگه جدید، مقداری متن به A1:C2 اضافه کنید. به راحتی می توانید ورودی های نمونه زیر را دنبال کنید:

c3aadaef52a609bf.png

  1. ردیف اول را برجسته کنید.

cfe36fcf833d0bd7.gif

  1. برای اعمال ماکرو در ناحیه انتخاب شده، روی Extensions > Macros > Header کلیک کنید.
  2. با دنبال کردن دستورالعمل‌های روی صفحه، ماکرو را مجاز کنید.
  1. مرحله 4 را برای اجرای مجدد ماکرو تکرار کنید (مجوز کردن آن اولین اجرا را متوقف می کند).

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

7c7130a4a697bd92.png

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

4. ماکروها در ویرایشگر اسکریپت

همانطور که یک ماکرو ایجاد می کنید، Google Sheets اقدامات شما را به عنوان یک تابع Apps Script ذخیره می کند. وقتی ماکرو را فعال می‌کنید، Google Sheets تابع Apps Script را فراخوانی می‌کند تا آن اقدامات را به همان ترتیب اعمال کند.

ویرایشگر فیلمنامه

اکنون که یک ماکرو ایجاد کرده اید، می توانید به کد آن نگاه کنید. برای مشاهده اسکریپت ماکرو، روی Extensions > Apps Script کلیک کنید تا ویرایشگر کد مرورگر برای Apps Script باز شود.

ویرایشگر اسکریپت به شما این امکان را می دهد که کد را در Apps Script بنویسید و آن اسکریپت ها را در سرورهای Google اجرا کنید.

تجزیه و تحلیل macro.gs

اسکریپت فعلی را مرور کنید. Sheets فایل اسکریپت macros.gs را زمانی که ماکرو Header را ضبط کردید ایجاد کرد و آن را با یک تابع Apps Script مربوطه به نام Header پر کرد. هنگامی که ماکرو Header را فعال می کنید، Sheets این عملکرد را اجرا می کند.

به تصویر زیر نگاه کنید تا با ساختار عملکرد ماکرو خود در Apps Script آشنا شوید. اگر مراحل را به ترتیب دیگری ضبط کرده باشید، یا در حین ضبط روی صفحه گسترده کلیک کرده باشید، ممکن است کد شما کمی متفاوت از این به نظر برسد.

5d653a69a0897adf.png

خط اول یک نظر حاشیه نویسی است که بر مجوز تأثیر می گذارد:

/** @OnlyCurrentDoc */

بیشتر اسکریپت ها قبل از اجرا از کاربر مجوز می خواهند. این مجوزها کنترل می کنند که کاربر به اسکریپت چه اجازه ای می دهد. هنگامی که نظر @OnlyCurrentDoc در یک پروژه اسکریپت وجود دارد، Apps Script فقط برای دسترسی و به‌روزرسانی صفحه‌گسترده فعلی اجازه می‌خواهد. بدون این نظر، Apps Script برای دسترسی و به‌روزرسانی همه صفحات گسترده کاربر اجازه می‌خواهد. زمانی که فقط با یک فایل کار می کنید، همیشه بهترین تمرین گنجاندن این حاشیه نویسی است. ضبط کننده ماکرو این نظر را به صورت خودکار برای شما اضافه می کند.

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

function Header(){
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, sheet.getMaxColumns()).activate();
  spreadsheet.getActiveRangeList().setBackground('#4c1130')
  .setFontColor('#ffffff')
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
};

این کد زمانی اجرا می شود که ماکرو Header را فعال می کنید. پس از function ، برچسب Header() نام تابع و پارامترهای آن را تعریف می کند. توجه داشته باشید که Header() به هیچ پارامتری نیاز ندارد زیرا توابع ماکرو در Apps Script نیازی به ورودی ندارند. بریس ها همیشه بدنه یک تابع را در Apps Script محصور می کنند.

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

var spreadsheet = SpreadsheetApp.getActive();

در اینجا، getActive() یک شی را که نشان دهنده فایل صفحه گسترده فعال فعلی در Sheets است برمی گرداند و آن را به spreadsheet متغیر جدید تنظیم می کند.

var sheet = spreadsheet.getActiveSheet();
sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, sheet.getMaxColumns()).activate();

این خطوط مربوط به عمل کلیک کردن روی ردیف اول برای برجسته کردن آن است. به این می گویند فعال سازی . خط اول sheet فعلی را در صفحه متغیر ذخیره می کند، در حالی که خط دوم کل ردیف اول را با استفاده از getRange() می کند و سپس activate() را برای فعال کردن آن فراخوانی می کند. سطر اول با استفاده از شماره سطر و ستون خاص مشخص می شود. spreadsheet.getCurrentCell().getRow() تعداد ردیف فعلی را برمی گرداند، در حالی که sheet.getMaxColumns() حداکثر تعداد ستون ها را در برگه برمی گرداند.

spreadsheet.getActiveRangeList().setBackground('#4c1130')
.setFontColor('#ffffff')
.setFontWeight('bold');

این بیت کد پیچیده تر می شود. برای فراخوانی مؤثر متدها با spreadsheet ، کد سه روش را روی getActiveRangeList() قرار می‌دهد تا از فراخوانی اضافی کد بیش از یک بار در این متد spreadsheet جلوگیری کند. همانطور که بیشتر با استفاده از Apps Script کدنویسی می کنید، با این قرارداد فراخوانی چندین روش در یک کلاس (همچنین به عنوان زنجیره متد نیز شناخته می شود) بیشتر آشنا خواهید شد. در حال حاضر، می توانید برای توضیحات مختصر در مورد هر روش در بلوک کد، موارد زیر را بخوانید:

  • getActiveRangeList() RangeList فعال فعلی را در spreadsheet برمی گرداند. در این مورد، به سادگی اولین ردیفی است که خط قبلی فعال شده است.
  • هر دو روش setBackground(color) و setFontColor(color) ویژگی های رنگ سلول ها را در محدوده فعال تغییر می دهند.
  • setFontWeight(fontWeight) وزن فونت را برای سلول های محدوده فعال تنظیم می کند.

در نهایت، خط نهایی اولین ردیف ماکرو را ثابت می کند:

spreadsheet.getActiveSheet().setFrozenRows(1);

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

بخش بعدی بر روی دستکاری کد تابع Header() تمرکز دارد تا نشان دهد چگونه می توانید از ویرایشگر اسکریپت برای شخصی سازی بیشتر ماکروها استفاده کنید.

ماکروها را با Apps Script سفارشی کنید

ویرایشگر Apps Script ماکرویی را که قبلاً در Google Sheets ایجاد کرده‌اید نشان می‌دهد. با تنظیم محتویات بدنه عملکرد، می‌توانید دستورالعمل‌های ماکرو خود را برای انجام اقدامات مختلف یا اضافی سفارشی کنید. تمرین‌های زیر راه‌های مختلفی را برای دستکاری ماکروها با ویرایشگر اسکریپت نشان می‌دهند.

سلول های آسیب دیده را تغییر دهید

فرض کنید می خواهید ماکرو خود را طوری تغییر دهید که به جای کل سطر، فقط 10 ستون اول سطر اول را تحت تأثیر قرار دهد. می توانید ماکرو را حذف کرده و دوباره آن را ضبط کنید. اما، با استفاده از ویرایشگر Apps Script، می توانید آن تغییرات را مستقیماً انجام دهید. در اینجا یک راه برای انجام آن وجود دارد:

  1. در ویرایشگر اسکریپت، sheet.getMaxColumns() را با 10 جایگزین کنید. این ویرایش، محدوده سلول‌هایی را که ماکرو روی صفحه‌گسترده تأثیر می‌گذارد، تغییر می‌دهد.
/** @OnlyCurrentDoc */

function Header(){
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, 10).activate();
    /* sheet.getMaxColumns() replaced with 10.*/
  spreadsheet.getActiveRangeList().setBackground('#4c1130')
  .setFontColor('#ffffff')
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
}
  1. برای ذخیره اسکریپت خود، روی ذخیره کلیک کنید صرفه جویی .
  2. برای تغییر نام پروژه خود، "Macros and Custom Functions" را به عنوان نام پروژه جدید وارد کنید و روی تغییر نام کلیک کنید.
  3. برای ایجاد یک برگه، در Sheets، روی Add Sheet کلیک کنید 9c9b0c19bf317e7f.png .

927c012b4e11475b.png

  1. در ویرایشگر اسکریپت، از لیست توابع، Header را انتخاب کرده و روی Run کلیک کنید.

در برگه جدید خود، باید نتیجه زیر را مشاهده کنید:

8a58ba02535b2b9c.png

با تغییر محدوده فعال یا هدف، ماکرو شما اکنون تنها بخشی از ردیف اول را تحت تأثیر قرار می دهد. بسیاری از روش‌های Apps Script یک محدوده یا نماد A1 را به عنوان پارامتر تعیین می‌کنند تا مشخص کنند روی کدام سلول‌ها باید عمل کنند.

در مرحله بعد، بیایید در مورد سفارشی کردن رنگ های ماکرو خود بیاموزیم.

رنگ های ماکرو خود را تغییر دهید

برای کمک به طراحی طرح رنگ ماکروها یا سایر عناصر در Sheets، Apps Script می تواند رنگ پر یا متن محدوده را تغییر دهد. دستورالعمل‌های زیر را دنبال کنید تا یاد بگیرید چگونه می‌توانید رنگ‌های ماکرو خود را سفارشی کنید.

این دستورالعمل‌ها بر تغییر رنگ پس‌زمینه ماکرو تمرکز دارند:

  1. در برگه‌ها، به برگه‌ای که حاوی داده‌های اصلی است (برگ 1) برگردید.
  2. روی ردیف اول کلیک کنید تا برجسته شود.
  3. در ویرایشگر اسکریپت، رنگ پس زمینه #4c1130 با #afeeee کنید. این مقادیر رنگ های مختلف را با استفاده از نماد سه گانه هگزا نشان می دهند.
/** @OnlyCurrentDoc */

function Header(){
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, 10).activate();
  spreadsheet.getActiveRangeList().setBackground('#afeeee')
    /* #4c1130 replaced with #afeeee.*/
  .setFontColor('#ffffff')
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
}
  1. برای ذخیره اسکریپت خود، روی ذخیره کلیک کنید صرفه جویی .
  2. از لیست توابع، Header را انتخاب کرده و روی Run کلیک کنید.

در Sheets، پس‌زمینه 10 ستون اول در ردیف اول به رنگ فیروزه‌ای سفارشی تغییر رنگ می‌دهد:

bbd26f7c8e35039.png

با تغییر نماد رنگ هگزا در پارامترهای setBackground(color) از #4c1130 (ارغوانی تیره 3) به #afeeee (فیروزه ای کم رنگ، گزینه ای که در منوی رنگی پیش فرض Sheets قابل دسترسی نیست)، ویژگی رنگ پس زمینه ماکرو خود را تغییر می دهید. رنگ

اکنون رنگ پس زمینه تنظیم شده توسط ماکرو را تغییر داده اید. اگر می خواهید رنگ متن را نیز تغییر دهید، کد رنگ دوم را تغییر دهید.

  1. در کاربرگ‌نگار، روی اولین ردیف کلیک کنید تا مطمئن شوید که هنوز برجسته است.
  2. در ویرایشگر اسکریپت، رنگ فونت #ffffff را با #191970 کنید. این باعث می شود که ماکرو رنگ فونت آبی سرمه ای را تنظیم کند.
/** @OnlyCurrentDoc */

function Header(){
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, 10).activate();
  spreadsheet.getActiveRangeList().setBackground('#afeeee')
  .setFontColor('#191970')/* #ffffff replaced with #191970.*/
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
}
  1. برای ذخیره اسکریپت خود، روی ذخیره کلیک کنید صرفه جویی .
  2. از لیست توابع، Header را انتخاب کرده و روی Run کلیک کنید.

برای دیدن رنگ متن ردیف سرصفحه اکنون به رنگ آبی سرمه ای به Sheets بازگردید.

2eaf2fb4879e1b36.png

اکنون مشاهده کرده‌اید که ماکروها در واقع عملکردهای Sheets هستند که به عنوان کد Apps Script ثبت می‌شوند. در بخش بعدی، می‌توانید روش دیگری را مشاهده کنید که Apps Script می‌تواند به شما در کار با Google Sheets کمک کند: توابع سفارشی .

5. اولین اسکریپت خود را کد کنید: توابع سفارشی

مانند اکثر برنامه‌های صفحه‌گسترده، Google Sheets دارای چندین تابع فرمول داخلی مانند =SUM() است که محاسبات سریع روی داده‌های صفحه‌گسترده را امکان‌پذیر می‌کند. توابع سفارشی به سادگی توابعی هستند که با استفاده از Apps Script مشخص می کنید. هنگامی که یک تابع سفارشی را تعریف کردید، می توانید از آن در هر نقطه از صفحه گسترده خود استفاده کنید، درست مانند یک تابع داخلی.

این بخش به شما نشان می دهد که چگونه یک تابع سفارشی در Apps Script ایجاد کنید که تبدیل پولی را انجام می دهد.

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

با استفاده از همان صفحه گسترده و پروژه اسکریپت از بخش Macros، این دستورالعمل ها را دنبال کنید تا یاد بگیرید چگونه یک اسکریپت جدید بسازید (که در نهایت می توانید برای ایجاد اولین تابع سفارشی خود از آن استفاده کنید):

  1. برای ایجاد فایل Apps Script، به ویرایشگر اسکریپت برگردید.
  2. در کنار فایل‌ها ، روی افزودن فایل کلیک کنید یک فایل اضافه کنید > اسکریپت
  3. نام فایل اسکریپت جدید را customFunctions و Enter را فشار دهید. (Apps Script به طور خودکار یک پسوند .gs را به نام فایل اسکریپت اضافه می کند.)

یک برگه جدید به نام customFunctions.gs در ویرایشگر ظاهر می شود.

اکنون که یک اسکریپت به طور خاص برای توابع سفارشی ایجاد کرده اید، می توانید آن را با کد پر کنید.

دلار آمریکا را به فرانک سوئیس تبدیل کنید

فرض کنید می‌خواهید داده‌های «10 فیلم برتر 2018» را تغییر دهید تا نه تنها ارزش ناخالص جهانی را به دلار آمریکا، بلکه به فرانک سوئیس نیز نشان دهد. با توابع سفارشی، می توانید این کار را به راحتی انجام دهید. تمرین زیر نحوه ایجاد یک تابع سفارشی برای تبدیل ریاضی ارزش دلار خود را به مقادیر فرانک نشان می دهد.

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

  1. در Sheets، روی ستون H کلیک راست کنید.
  2. در منوی به دست آمده، روی Insert 1 به سمت راست کلیک کنید.

fc1421cb1c456e52.gif

  1. ستون "Worldwide_Gross (فرانک سوئیس)" را در سلول I1 برچسب بزنید.

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

  1. در customFunctions.gs ، کد myFunction() را با کد زیر جایگزین کنید:
/**
 * Converts US dollars to Swiss francs.
 *
 * @param {number} dollars The total number of dollars.
 * @return {number} swissFrancs The converted total of Swiss francs.
 * @customfunction
 */
function USDTOCHF(dollars){
  var swissFrancs = dollars * .99; 
  return swissFrancs;
}

این کدی است که دلار آمریکا را به فرانک سوئیس تبدیل می کند. دستورالعمل های زیر را امتحان کنید و ببینید چگونه می توانید یک تابع سفارشی را در برگه ها اجرا کنید.

  1. برای ذخیره اسکریپت خود، روی ذخیره کلیک کنید صرفه جویی .
  2. در Sheets، سلول I2 را انتخاب کنید.
  3. در نوار تابع، =USDTOCHF(H2) را وارد کنید.

برای اعمال فرمول به بقیه سلول های ستون:

  1. مکان نما خود را به گوشه سمت راست پایین سلول I2 ببرید و کادر آبی کوچک را انتخاب کنید (مکان نما باید به 9c9b0c19bf317e7f.png وقتی به کادر آبی اشاره می کنید).
  2. کادر آبی را به سمت پایین بکشید تا محدوده I3 : I11 برجسته شود.

3cf46560d6cea0de.gif

اکنون ستون I تبدیل فرانک سوئیس به ارزش دلار آمریکا را در ستون H فهرست می کند.

7fc06b3d7e3e2a9.png

تبریک، شما اولین تابع سفارشی خود را ایجاد کردید. بخش بعدی کدی را که شامل USDTOCHF() است توضیح می دهد.

تجزیه و تحلیل USDTOCHF()

نظرات اولیه هدف کد را شرح می دهد:

/**
 * Converts US dollars to Swiss francs.
 *
 * @param {number} dollars The total number of dollars.
 * @return {number} swissFrancs The provided value in Swiss francs.
 * @customfunction
 */

بلوک های نظر مانند این اغلب در برنامه نویسی برای توضیح عملکرد توابع استفاده می شوند.

در این نظر می توانید دو بخش را شناسایی کنید: توضیحات تابع (برای تبدیل دلار به فرانک) و حاشیه نویسی که پارامترهای تابع و نوع بازگشت را توصیف می کند.

با حاشیه نویسی ها، Apps Script از JSDoc برای کمک به مستندسازی و ایجاد نکات تکمیل خودکار برای کد خود استفاده می کند. می‌توانید در زیر بخوانید که چگونه هر حاشیه‌نویسی استفاده شده در USDTOCHF() به شما در توسعه Apps Script کمک می‌کند:

  • @param : می توانید از حاشیه نویسی @param برای توصیف هر پارامتر ارسال شده به تابع استفاده کنید.
  • @return : می‌توانید از حاشیه‌نویسی @return برای توصیف آنچه که تابع برمی‌گرداند استفاده کنید.
  • @customfunction : همیشه باید @customfunction را در نظر سند هر تابع سفارشی اضافه کنید. این حاشیه‌نویسی به Sheets اطلاع می‌دهد تا عملکرد سفارشی شما را به‌طور خودکار تکمیل کنند، همانطور که Sheets عملکردهای داخلی را هنگامی که نام تابعی را در یک سلول وارد می‌کنید، همانطور که در زیر مشاهده می‌کنید، تکمیل می‌کند:

d8680ab6efae97ac.gif

توجه کنید متنی که در پاپ آپ تکمیل خودکار ظاهر می شود دقیقاً با متن توضیحاتی که در بلوک نظرات قرار داده اید مطابقت دارد. با اطمینان از اینکه توضیحاتی که ایجاد می کنید به خوبی نوشته شده و کامل هستند، می توانید استفاده از توابع سفارشی خود را آسان تر کنید.

سپس روی کد تابع USDTOCHF() تمرکز کنید:

function USDTOCHF(dollars){
  var swissFrancs = dollars * .99; 
  return swissFrancs;
}

همانطور که قبلا ذکر شد، USDTOCHF() متغیر عددی dollars را می گیرد، آن را در نرخ مبادله ثابت ضرب می کند و مقدار تبدیل شده به فرانک سوئیس را در متغیر عددی swissFrancs . پارامتر ورودی مقدار موجود در سلولی است که هنگام اضافه کردن تابع سفارشی به یک سلول مشخص شده است. در این مثال، مقادیر دلار ورودی از ستون H می آید. مقدار خروجی swissFrancs در سلول تابع قرار می گیرد (ستون I در این مثال).

همانطور که در بخش بعدی خواهید دید، توابع سفارشی می توانند با مقادیر عددی یا رشته ای کار کنند.

یک پیشوند رشته را به هم متصل کنید

فرض کنید می خواهید خروجی عددی تابع USDTOCHF() شامل پیشوند فرانک سوئیس CHF باشد. همانطور که در دستورالعمل های زیر نشان داده شده است , می توانید این کار را با Apps Script با استفاده از عملگر الحاق ( + ) انجام دهید:

  1. در ویرایشگر اسکریپت، حاشیه نویسی @return را به روز کنید تا رشته را به جای عدد برگرداند.
  2. return swissFrancs را به return 'CHF' + swissFrancs .

عملگر + رشته CHF را به جلوی مقدار موجود در swissFrancs سوئیس اضافه می کند. اکنون کد شما باید به شکل زیر باشد:

/**
 * Converts US dollars to Swiss francs.
 *
 * @param {number} dollars The total number of dollars.
 * @return {string} swissFrancs The provided value in Swiss francs.
 * @customfunction
 */
function USDTOCHF(dollars){
  var swissFrancs = dollars * .99;
  return 'CHF' + swissFrancs;
}
  1. برای ذخیره اسکریپت خود، روی ذخیره کلیک کنید صرفه جویی .

رشته فرانک سوئیس اکنون مقادیر ستون I را پیشوند می دهد:

20e4bfb7f0a994ea.png

تابع سفارشی شما اکنون نه تنها دلار آمریکا را به فرانک سوئیس تبدیل می کند، بلکه ارز را با پیشوند رشته ای نیز خروجی می دهد.

پیشرفته: واکشی داده های خارجی

این شروع خوبی برای یک تابع سفارشی اولیه است، اما در این مثال نرخ تبدیل دلار به فرانک سوئیس ثابت است. فرض کنید به جای آن می‌خواهید از نرخ ارز فعلی استفاده کنید، بنابراین هر زمان که برگه بارگذاری مجدد می‌شود، مقادیر برای نشان دادن تبدیل فعلی دوباره محاسبه می‌شوند؟ برای انجام این کار، به ابزاری برای کشف نرخ ارز فعلی نیاز دارید. این اطلاعات به راحتی در Google Sheets در دسترس نیست، اما خوشبختانه می توانید از Apps Script برای دریافت آن استفاده کنید.

برای دریافت نرخ تبدیل کنونی فرانک سوئیس به دلار آمریکا می توانید از کدی مانند زیر استفاده کنید:

function USDTOCHF(dollars){
  // Gets a cache that is common to all users of the script.
  var cache = CacheService.getScriptCache();

  // Accesses the memory location (rates.CHF) of the script cache.
  var rate = cache.get('rates.CHF');

  // If a cache miss occurs, the program fetches the current
  // CHF rate from an API and stores the rate in the cache
  // for later convenience.
  if (!rate) {
    var response =
UrlFetchApp.fetch('https://api.exchangeratesapi.io/latest?base=USD');
    var result = JSON.parse(response.getContentText());
    rate = result.rates.CHF;
    cache.put('rates.CHF', rate);
  }
  // Converts dollars to CHF according to the latest rate.
  var swissFrancs = dollars * rate;
  // Returns the CHF value.
  return 'CHF' + swissFrancs;
}

این کد نرخ ارز فعلی را از یک سرور اطلاعات مالی با استفاده از API نرخ ارز شخص ثالث دریافت می کند. این کار با استفاده از سرویس‌های Apps Script مانند UrlFetchApp و CacheService انجام می‌شود. این مفاهیم پیشرفته خارج از محدوده این کد خاص هستند، اما می‌توانید تطبیق‌پذیری Apps Script را برای خودکارسازی وظایف پیچیده در Google Sheets مشاهده کنید.

دستورالعمل های عملکرد سفارشی

بابت تکمیل تمرینات توابع سفارشی تبریک می گویم. همانطور که از توابع سفارشی در پروژه های خود استفاده می کنید، مهم است که بدانید آنها محدودیت های خاصی دارند. فهرست زیر محدودیت‌هایی را که در راهنمای توابع سفارشی در Google Sheets توضیح داده شده است، خلاصه می‌کند:

  • توابع سفارشی که نیاز به مجوز کاربر دارند ایجاد نکنید . در عوض، توابع سفارشی خود را بسازید تا وظایف ساده‌تری مانند محاسبات داده‌های نمونه، ویرایش متن و غیره را انجام دهید. به استفاده از خدمات برنامه‌های اسکریپت بروید.
  • یک تابع سفارشی را مانند یک تابع داخلی دیگر نامگذاری نکنید، یا نام آن را با خط زیر ختم نکنید. دستورالعمل های نامگذاری را مرور کنید.
  • آرگومان های متغیر را به توابع سفارشی منتقل نکنید. شما فقط می توانید مقادیر قطعی (ثابت) را به عنوان آرگومان به توابع سفارشی ارسال کنید. ارسال آرگومان های متغیر، مانند نتیجه =RAND() باعث شکسته شدن تابع سفارشی می شود. دستورالعمل های استدلال را ببینید.
  • عملکردهایی را ایجاد نکنید که تکمیل آنها بیش از 30 ثانیه طول می کشد. اگر بیشتر طول بکشد، خطایی رخ می دهد، بنابراین کد تابع را ساده و محدود نگه دارید. بهتر است محاسبات انجام شده در توابع سفارشی تا حد امکان ساده باشد. دستورالعمل های مقادیر بازگشتی را مشاهده کنید.

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

6. نتیجه گیری

شما اولین لبه کد اسکریپت اصول برنامه‌ها را با کاربرگ‌نگار Google تکمیل کرده‌اید. با ایجاد و ویرایش ماکروهای Sheets و توابع سفارشی، مفاهیم اولیه Apps Script را یاد گرفتید. می‌توانید دانش Apps Script خود را در بخش کد بعدی بیشتر گسترش دهید.

آیا این کد لبه را مفید یافتید؟

آره خیر

آنچه را پوشش داده ایم

  • مفاهیم اولیه اسکریپت برنامه ها.
  • نحوه پیمایش در ویرایشگر اسکریپت
  • نحوه ایجاد و به روز رسانی ماکروهای Sheets.
  • نحوه ایجاد توابع سفارشی برای Google Sheets.

بعدش چیه

کد بعدی در این لیست پخش، کلاس‌های اصلی و اصطلاحات سرویس Apps Script Spreadsheet را ارائه می‌کند. این سرویس به شما امکان می دهد تا با استفاده از Apps Script مقادیر و ارائه داده ها را در Google Sheets به خوبی کنترل کنید.

کد بعدی را در صفحات گسترده، برگه‌ها و محدوده‌ها پیدا کنید.