تقنية

كيفية إضافة قائمة مخصصة عالمية إلى تطبيقات Google Workspace المتعددة


استخدم Google Apps Script لإنشاء قائمة مخصصة تعمل داخل جداول بيانات Google، ومستندات Google، والعروض التقديمية، ونماذج Google.


تعد إضافة قائمة مخصصة في جداول البيانات والمستندات والعروض التقديمية والنماذج من Google باستخدام Google Apps Script أمراً سهلاً.

على سبيل المثال، يضيف مقتطف الكود التالي قائمة مخصصة إلى ورقة Google الأصلية التي تكشف عن اسم جدول البيانات عند النقر عليه.

function onOpen() {
  const ui = SpreadsheetApp.getUi();
  const menu = ui.createMenu('➯ Custom menu');
  menu.addItem('Show spreadsheet name', 'showName');
  menu.addToUi();
}

function showName() {
  const fileName = SpreadsheetApp.getActiveSpreadsheet().getName();
  SpreadsheetApp.getUi().alert(fileName);
}

يحدد الكود أعلاه وظيفتين: onOpen والذي يتم تنفيذه عند فتح التطبيق، و showName والذي يتم تشغيله عند النقر فوق عنصر القائمة.

يمكن تطبيق هذا الأسلوب لإنشاء قوائم مخصصة في تطبيقات Google Workspace الأخرى، بما في ذلك النماذج والعروض التقديمية ومستندات Google.

الكود أعلاه خاص بجداول بيانات Google ولن يعمل إذا كنت تستخدمه لإضافة قوائم مخصصة في نماذج Google أو العروض التقديمية. هذا لأنك بحاجة إلى الاتصال SpreadsheetApp.getUi() للحصول على مثيل واجهة المستخدم الخاصة بالورقة بينما يمكن الوصول إلى واجهة مستخدم نموذج Google من خلال واجهة مستخدم مختلفة FormApp.getUi() طريقة.

يمكن أن يمثل هذا مشكلة لأن بعض وظائف Google الإضافية، مثل Document Studio، على سبيل المثال، يمكن تشغيلها من تطبيقات Google Workspace المتعددة. كيف يمكنك تحديد تطبيق Workspace النشط حاليًا (جداول البيانات أو المستندات أو العروض التقديمية أو النماذج) وإضافة عناصر القائمة الخاصة بهذا التطبيق؟

تحديد تطبيق مساحة العمل الحالي

ال getContainer الوظيفة هي سلاحك السري لتحديد تطبيق Google Workspace النشط حاليًا. إنه يعمل عن طريق التكرار من خلال قائمة فئات التطبيقات المعروفة، مثل DocumentApp و SpreadsheetApp.

لكل فئة، فإنه يحاول الوصول إلى كائن واجهة المستخدم. إذا كان الاستدعاء ناجحًا ولم يطرح استثناءً، فهذا يشير إلى أن التطبيق المقابل نشط ويقوم بإرجاع فئة التطبيق تلك.

const getContainer = () => {
  const apps = [DocumentApp, SpreadsheetApp, FormApp, SlidesApp];
  const activeApp = apps.find((app) => {
    try {
      app.getUi();
      return true;
    } catch (f) {
      return false;
    }
  });

  return activeApp;
};

الآن بعد أن تعرفت على تطبيق Workspace الحالي، يمكننا تعديل ملف onOpen وظيفة لإنشاء قائمة عالمية ديناميكية. يحتوي عنوان القائمة على اسم التطبيق النشط ويتضمن عنصر قائمة لعرض اسم الملف الخاص بالتطبيق.

const onOpen = () => {
  const app = getContainer();
  const ui = app.getUi();
  const appName = String(app).replace('App', '');
  const menu = ui.createMenu(`Custom menu in ${appName}`);
  menu.addItem(`Show ${appName} name`, 'showAppName');
  menu.addToUi();
};

ال showAppName تستخدم الوظيفة عبارة تبديل لتحديد الطريقة المناسبة لاسترداد اسم الملف بناءً على التطبيق النشط.

const showAppName = () => {
  const app = getContainer();
  let fileName;
  if (app === DocumentApp) {
    fileName = DocumentApp.getActiveDocument().getName();
  } else if (app === SpreadsheetApp) {
    fileName = SpreadsheetApp.getActiveSpreadsheet().getName();
  } else if (app === SlidesApp) {
    fileName = SlidesApp.getActivePresentation().getName();
  } else if (app === FormApp) {
    fileName = FormApp.getActiveForm().getTitle();
  }
  app.getUi().alert(`You are looking at ${fileName}`);
};



Source link

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى