گسترش Google Sheets

Google Apps Script به شما امکان می دهد کارهای جدید و جالبی با Google Sheets انجام دهید. می‌توانید از Apps Script برای افزودن منوها، دیالوگ‌ها و نوارهای جانبی سفارشی به Google Sheets استفاده کنید. همچنین به شما امکان می‌دهد توابع سفارشی برای کاربرگ‌نگار بنویسید، و همچنین Sheets را با سایر سرویس‌های Google مانند Calendar، Drive و Gmail ادغام کنید.

بیشتر اسکریپت‌های طراحی‌شده برای Google Sheets، آرایه‌ها را برای تعامل با سلول‌ها، ردیف‌ها و ستون‌های یک صفحه‌گسترده دستکاری می‌کنند. اگر با آرایه ها در جاوا اسکریپت آشنایی ندارید، Codecademy یک ماژول آموزشی عالی برای آرایه ها ارائه می دهد. (توجه داشته باشید که این دوره توسط Google ایجاد نشده است و با آن مرتبط نیست.)

برای آشنایی سریع با استفاده از Apps Script با Google Sheets، راهنمای شروع سریع 5 دقیقه ای ماکروها، منوها و توابع سفارشی را ببینید.

شروع کنید

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

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

خواندن داده ها

فرض کنید فهرستی از نام محصول و شماره محصول دارید که در یک صفحه گسترده ذخیره می کنید، همانطور که در تصویر زیر نشان داده شده است.

مثال زیر نحوه بازیابی و ثبت نام و شماره محصول را نشان می دهد.

function logProductInfo() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  for (var i = 0; i < data.length; i++) {
    Logger.log('Product name: ' + data[i][0]);
    Logger.log('Product number: ' + data[i][1]);
  }
}

مشاهده سیاهههای مربوط

برای مشاهده داده‌های ثبت‌شده، در بالای ویرایشگر اسکریپت، روی گزارش اجرا کلیک کنید.

نوشتن داده ها

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

function addProduct() {
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.appendRow(['Cotton Sweatshirt XL', 'css004']);
}

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

منوها و رابط های کاربری سفارشی

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

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

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

در حال اتصال به Google Forms

Apps Script به شما امکان می‌دهد از طریق فرم‌ها و سرویس‌های صفحه گسترده، Google Forms را با Google Sheets متصل کنید. این ویژگی می تواند به طور خودکار یک فرم Google بر اساس داده های یک صفحه گسترده ایجاد کند. Apps Script همچنین به شما امکان می‌دهد از محرک‌هایی مانند onFormSubmit برای انجام یک عمل خاص پس از پاسخ کاربر به فرم استفاده کنید. برای کسب اطلاعات بیشتر در مورد اتصال Google Sheets به Google Forms، شروع سریع 5 دقیقه‌ای مدیریت پاسخ‌ها برای Google Forms را امتحان کنید.

قالب بندی

کلاس Range متدهایی مانند setBackground(color) برای دسترسی و تغییر فرمت یک سلول یا محدوده سلول ها دارد. مثال زیر نشان می دهد که چگونه می توانید سبک قلم یک محدوده را تنظیم کنید:

function formatMySpreadsheet() {
  // Set the font style of the cells in the range of B2:C2 to be italic.
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var cell = sheet.getRange('B2:C2');
  cell.setFontStyle('italic');
}

اعتبار سنجی داده ها

Apps Script به شما امکان می دهد به قوانین اعتبارسنجی داده موجود در Google Sheets دسترسی داشته باشید یا قوانین جدیدی ایجاد کنید. به عنوان مثال، نمونه زیر نحوه تنظیم یک قانون اعتبارسنجی داده را نشان می دهد که فقط اعداد بین 1 تا 100 را در یک سلول مجاز می کند.

function validateMySpreadsheet() {
  // Set a rule for the cell B4 to be a number between 1 and 100.
  var cell = SpreadsheetApp.getActive().getRange('B4');
  var rule = SpreadsheetApp.newDataValidation()
     .requireNumberBetween(1, 100)
     .setAllowInvalid(false)
     .setHelpText('Number must be between 1 and 100.')
     .build();
  cell.setDataValidation(rule);
}

برای جزئیات بیشتر در مورد کار با قوانین اعتبارسنجی داده، به SpreadsheetApp.newDataValidation() ، DataValidationBuilder و Range.setDataValidation(rule) مراجعه کنید.

نمودارها

Apps Script به شما امکان می دهد نمودارهایی را در یک صفحه گسترده جاسازی کنید که داده ها را در یک محدوده خاص نشان می دهد. مثال زیر یک نمودار میله‌ای تعبیه‌شده ایجاد می‌کند، با این فرض که داده‌های قابل نمودار در سلول‌های A1:B15 دارید:

function newChart() {
  // Generate a chart representing the data in the range of A1:B15.
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];

  var chart = sheet.newChart()
     .setChartType(Charts.ChartType.BAR)
     .addRange(sheet.getRange('A1:B15'))
     .setPosition(5, 5, 0, 0)
     .build();

  sheet.insertChart(chart);
}

برای کسب اطلاعات بیشتر در مورد جاسازی نمودار در صفحه گسترده خود، به EmbeddedChart و سازندگان نمودار خاص، مانند EmbeddedPieChartBuilder مراجعه کنید.

توابع سفارشی در Google Sheets

یک تابع سفارشی شبیه به یک تابع صفحه گسترده داخلی مانند =SUM(A1:A5) است با این تفاوت که شما رفتار توابع را با Apps Script تعریف می کنید. برای مثال، می‌توانید یک تابع سفارشی، in2mm() ایجاد کنید که مقداری را از اینچ به میلی‌متر تبدیل می‌کند، سپس با تایپ =in2mm(A1) یا =in2mm(10) در یک سلول، از فرمول در صفحه‌گسترده خود استفاده کنید.

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

ماکروها

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

افزونه‌های Google Sheets

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

محرک ها

اسکریپت‌هایی که به فایل کاربرگ‌نگار Google متصل می‌شوند می‌توانند از محرک‌های ساده مانند توابع onOpen() و onEdit() استفاده کنند تا وقتی کاربری که دسترسی ویرایش به صفحه‌گسترده را باز می‌کند یا صفحه‌گسترده را ویرایش می‌کند، به‌طور خودکار پاسخ دهد.

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

،

Google Apps Script به شما امکان می دهد کارهای جدید و جالبی با Google Sheets انجام دهید. می‌توانید از Apps Script برای افزودن منوها، دیالوگ‌ها و نوارهای جانبی سفارشی به Google Sheets استفاده کنید. همچنین به شما امکان می‌دهد توابع سفارشی برای کاربرگ‌نگار بنویسید، و همچنین Sheets را با سایر سرویس‌های Google مانند Calendar، Drive و Gmail ادغام کنید.

بیشتر اسکریپت‌های طراحی‌شده برای Google Sheets، آرایه‌ها را برای تعامل با سلول‌ها، ردیف‌ها و ستون‌های یک صفحه‌گسترده دستکاری می‌کنند. اگر با آرایه ها در جاوا اسکریپت آشنایی ندارید، Codecademy یک ماژول آموزشی عالی برای آرایه ها ارائه می دهد. (توجه داشته باشید که این دوره توسط Google ایجاد نشده است و با آن مرتبط نیست.)

برای آشنایی سریع با استفاده از Apps Script با Google Sheets، راهنمای شروع سریع 5 دقیقه ای ماکروها، منوها و توابع سفارشی را ببینید.

شروع کنید

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

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

خواندن داده ها

فرض کنید فهرستی از نام محصول و شماره محصول دارید که در یک صفحه گسترده ذخیره می کنید، همانطور که در تصویر زیر نشان داده شده است.

مثال زیر نحوه بازیابی و ثبت نام و شماره محصول را نشان می دهد.

function logProductInfo() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  for (var i = 0; i < data.length; i++) {
    Logger.log('Product name: ' + data[i][0]);
    Logger.log('Product number: ' + data[i][1]);
  }
}

مشاهده سیاهههای مربوط

برای مشاهده داده‌های ثبت‌شده، در بالای ویرایشگر اسکریپت، روی گزارش اجرا کلیک کنید.

نوشتن داده ها

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

function addProduct() {
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.appendRow(['Cotton Sweatshirt XL', 'css004']);
}

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

منوها و رابط های کاربری سفارشی

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

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

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

در حال اتصال به Google Forms

Apps Script به شما امکان می‌دهد از طریق فرم‌ها و سرویس‌های صفحه گسترده، Google Forms را با Google Sheets متصل کنید. این ویژگی می تواند به طور خودکار یک فرم Google بر اساس داده های یک صفحه گسترده ایجاد کند. Apps Script همچنین به شما امکان می‌دهد از محرک‌هایی مانند onFormSubmit برای انجام یک عمل خاص پس از پاسخ کاربر به فرم استفاده کنید. برای کسب اطلاعات بیشتر در مورد اتصال Google Sheets به Google Forms، شروع سریع 5 دقیقه‌ای مدیریت پاسخ‌ها برای Google Forms را امتحان کنید.

قالب بندی

کلاس Range متدهایی مانند setBackground(color) برای دسترسی و تغییر فرمت یک سلول یا محدوده سلول ها دارد. مثال زیر نشان می دهد که چگونه می توانید سبک قلم یک محدوده را تنظیم کنید:

function formatMySpreadsheet() {
  // Set the font style of the cells in the range of B2:C2 to be italic.
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var cell = sheet.getRange('B2:C2');
  cell.setFontStyle('italic');
}

اعتبار سنجی داده ها

Apps Script به شما امکان می دهد به قوانین اعتبارسنجی داده موجود در Google Sheets دسترسی داشته باشید یا قوانین جدیدی ایجاد کنید. به عنوان مثال، نمونه زیر نحوه تنظیم یک قانون اعتبارسنجی داده را نشان می دهد که فقط اعداد بین 1 تا 100 را در یک سلول مجاز می کند.

function validateMySpreadsheet() {
  // Set a rule for the cell B4 to be a number between 1 and 100.
  var cell = SpreadsheetApp.getActive().getRange('B4');
  var rule = SpreadsheetApp.newDataValidation()
     .requireNumberBetween(1, 100)
     .setAllowInvalid(false)
     .setHelpText('Number must be between 1 and 100.')
     .build();
  cell.setDataValidation(rule);
}

برای جزئیات بیشتر در مورد کار با قوانین اعتبارسنجی داده، به SpreadsheetApp.newDataValidation() ، DataValidationBuilder و Range.setDataValidation(rule) مراجعه کنید.

نمودارها

Apps Script به شما امکان می دهد نمودارهایی را در یک صفحه گسترده جاسازی کنید که داده ها را در یک محدوده خاص نشان می دهد. مثال زیر یک نمودار میله‌ای تعبیه‌شده ایجاد می‌کند، با این فرض که داده‌های قابل نمودار در سلول‌های A1:B15 دارید:

function newChart() {
  // Generate a chart representing the data in the range of A1:B15.
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];

  var chart = sheet.newChart()
     .setChartType(Charts.ChartType.BAR)
     .addRange(sheet.getRange('A1:B15'))
     .setPosition(5, 5, 0, 0)
     .build();

  sheet.insertChart(chart);
}

برای کسب اطلاعات بیشتر در مورد جاسازی نمودار در صفحه گسترده خود، به EmbeddedChart و سازندگان نمودار خاص، مانند EmbeddedPieChartBuilder مراجعه کنید.

توابع سفارشی در Google Sheets

یک تابع سفارشی شبیه به یک تابع صفحه گسترده داخلی مانند =SUM(A1:A5) است با این تفاوت که شما رفتار توابع را با Apps Script تعریف می کنید. برای مثال، می‌توانید یک تابع سفارشی، in2mm() ایجاد کنید که مقداری را از اینچ به میلی‌متر تبدیل می‌کند، سپس با تایپ =in2mm(A1) یا =in2mm(10) در یک سلول، از فرمول در صفحه‌گسترده خود استفاده کنید.

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

ماکروها

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

افزونه‌های Google Sheets

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

محرک ها

اسکریپت‌هایی که به فایل کاربرگ‌نگار Google متصل می‌شوند می‌توانند از محرک‌های ساده مانند توابع onOpen() و onEdit() استفاده کنند تا وقتی کاربری که دسترسی ویرایش به صفحه‌گسترده را باز می‌کند یا صفحه‌گسترده را ویرایش می‌کند، به‌طور خودکار پاسخ دهد.

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