منوهای سفارشی در Google Workspace

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

منوهای سفارشی در اسناد، برگه‌ها، اسلایدها یا فرم‌ها

Apps Script می‌تواند منوهای جدیدی را در Docs، Sheets، Slides یا Forms اضافه کند، که هر آیتم منو به یک تابع در یک اسکریپت مرتبط است. (در Forms، منوهای سفارشی فقط برای ویرایشگری که فرم را برای تغییر آن باز می‌کند قابل مشاهده هستند، نه برای کاربری که فرم را برای پاسخ دادن باز می‌کند.)

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

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

function onOpen() {
  const ui = SpreadsheetApp.getUi();
  // Or DocumentApp, SlidesApp or FormApp.
  ui.createMenu('Custom Menu')
      .addItem('First item', 'menuItem1')
      .addSeparator()
      .addSubMenu(ui.createMenu('Sub-menu')
          .addItem('Second item', 'menuItem2'))
      .addToUi();
}

function menuItem1() {
  SpreadsheetApp.getUi() // Or DocumentApp, SlidesApp or FormApp.
      .alert('You clicked the first menu item!');
}

function menuItem2() {
  SpreadsheetApp.getUi() // Or DocumentApp, SlidesApp or FormApp.
      .alert('You clicked the second menu item!');
}

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

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

تصاویر و نقاشی‌های قابل کلیک در Sheets

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

  1. در Sheets، گزینه‌ی منو Extensions > Apps Script را انتخاب کنید تا یک اسکریپت ایجاد شود که به صفحه‌گسترده متصل باشد.
  2. هر کدی را که در ویرایشگر اسکریپت وجود دارد حذف کنید و کد زیر را جایگذاری کنید.
function showMessageBox() {
  SpreadsheetApp.getUi().alert('You clicked it!');
}
  1. به برگه‌ها برگردید و با انتخاب Insert > Image یا Insert > Drawing، یک تصویر یا نقاشی وارد کنید.
  2. پس از درج تصویر یا نقاشی، روی آن کلیک کنید. یک منوی کشویی کوچک در گوشه بالا سمت راست ظاهر می‌شود. روی آن کلیک کنید و گزینه «اختصاص اسکریپت» را انتخاب کنید.
  3. در کادر محاوره‌ای که ظاهر می‌شود، نام تابع Apps Script را که می‌خواهید اجرا شود، بدون پرانتز تایپ کنید - در این مورد، showMessageBox . روی تأیید کلیک کنید.
  4. دوباره روی تصویر یا نقاشی کلیک کنید. اکنون تابع اجرا می‌شود.

اجرای اسکریپت فقط با کلیک روی تصویر یا نقاشی در مرورگر وب آغاز می‌شود. اگر تصویر یا نقاشی در موبایل کلیک شود، اسکریپت اجرا نمی‌شود.