একটি Google স্লাইড উপস্থাপনায় অগ্রগতি বার দেখান

কোডিং লেভেল : ইন্টারমিডিয়েট
সময়কাল : 15 মিনিট
প্রকল্পের ধরন : এডিটর অ্যাড-অন

উদ্দেশ্য

  • বুঝুন সমাধান কি করে।
  • সমাধানের মধ্যে অ্যাপস স্ক্রিপ্ট পরিষেবাগুলি কী করে তা বুঝুন।
  • স্ক্রিপ্ট সেট আপ করুন।
  • স্ক্রিপ্ট চালান।

এই সমাধান সম্পর্কে

আপনার উপস্থাপনায় স্লাইডের নীচে একটি অগ্রগতি বার যোগ করতে এই সমাধানটি ব্যবহার করুন।

প্রোগ্রেস বার স্লাইড এডিটর অ্যাড-অনের স্ক্রিনশট

এটা কিভাবে কাজ করে

স্ক্রিপ্ট প্রেজেন্টেশনে কতগুলি স্লাইড আছে তা গণনা করে এবং প্রতিটি স্লাইডের নীচে একটি আয়তক্ষেত্র আকৃতি যোগ করে। স্লাইডের মধ্যে অগ্রগতি দেখানোর জন্য স্ক্রিপ্ট প্রতিটি আয়তক্ষেত্রের আকারের জন্য প্রস্থ বাড়ায়।

অ্যাপস স্ক্রিপ্ট পরিষেবা

এই সমাধান নিম্নলিখিত পরিষেবা ব্যবহার করে:

  • স্লাইড পরিষেবা - একটি উপস্থাপনার স্লাইড পায় এবং প্রতিটিতে একটি আয়তক্ষেত্র আকৃতি যোগ করে৷

পূর্বশর্ত

এই নমুনা ব্যবহার করতে, আপনার নিম্নলিখিত পূর্বশর্ত প্রয়োজন:

  • একটি Google অ্যাকাউন্ট (Google Workspace অ্যাকাউন্টের জন্য অ্যাডমিনিস্ট্রেটরের অনুমোদনের প্রয়োজন হতে পারে)।
  • ইন্টারনেট অ্যাক্সেস সহ একটি ওয়েব ব্রাউজার।

স্ক্রিপ্ট সেট আপ করুন

  1. প্রগ্রেস বার স্লাইড উপস্থাপনার একটি অনুলিপি করতে নিম্নলিখিত বোতামে ক্লিক করুন। এই সমাধানের জন্য Apps স্ক্রিপ্ট প্রকল্প উপস্থাপনা সংযুক্ত করা হয়েছে.
    একটি কপি করুন
  2. উপস্থাপনায়, এক্সটেনশন > অগ্রগতি বার > অগ্রগতি বারে ক্লিক করুন।
  3. অনুরোধ করা হলে, স্ক্রিপ্ট অনুমোদন করুন. যদি OAuth সম্মতি স্ক্রীন সতর্কতা প্রদর্শন করে, এই অ্যাপটি যাচাই করা হয়নি , তাহলে Advanced > Go to {Project Name} (অনিরাপদ) নির্বাচন করে চালিয়ে যান।

  4. আবার, Extensions > Progress bar > Show Progress bar এ ক্লিক করুন।

  5. অগ্রগতি বার সরাতে, এক্সটেনশন > অগ্রগতি বার > অগ্রগতি বার লুকান ক্লিক করুন।

কোড পর্যালোচনা করুন

এই সমাধানের জন্য অ্যাপস স্ক্রিপ্ট কোড পর্যালোচনা করতে, নীচের উৎস কোড দেখুন ক্লিক করুন:

সোর্স কোড দেখুন

slides/progress/progress.gs
/**
 * @OnlyCurrentDoc Adds progress bars to a presentation.
 */
const BAR_ID = 'PROGRESS_BAR_ID';
const BAR_HEIGHT = 10; // px

/**
 * Runs when the add-on is installed.
 * @param {object} e The event parameter for a simple onInstall trigger. To
 *     determine which authorization mode (ScriptApp.AuthMode) the trigger is
 *     running in, inspect e.authMode. (In practice, onInstall triggers always
 *     run in AuthMode.FULL, but onOpen triggers may be AuthMode.LIMITED or
 *     AuthMode.NONE.)
 */
function onInstall(e) {
  onOpen();
}

/**
 * Trigger for opening a presentation.
 * @param {object} e The onOpen event.
 */
function onOpen(e) {
  SlidesApp.getUi().createAddonMenu()
      .addItem('Show progress bar', 'createBars')
      .addItem('Hide progress bar', 'deleteBars')
      .addToUi();
}

/**
 * Create a rectangle on every slide with different bar widths.
 */
function createBars() {
  deleteBars(); // Delete any existing progress bars
  const presentation = SlidesApp.getActivePresentation();
  const slides = presentation.getSlides();
  for (let i = 0; i < slides.length; ++i) {
    const ratioComplete = (i / (slides.length - 1));
    const x = 0;
    const y = presentation.getPageHeight() - BAR_HEIGHT;
    const barWidth = presentation.getPageWidth() * ratioComplete;
    if (barWidth > 0) {
      const bar = slides[i].insertShape(SlidesApp.ShapeType.RECTANGLE, x, y,
          barWidth, BAR_HEIGHT);
      bar.getBorder().setTransparent();
      bar.setLinkUrl(BAR_ID);
    }
  }
}

/**
 * Deletes all progress bar rectangles.
 */
function deleteBars() {
  const presentation = SlidesApp.getActivePresentation();
  const slides = presentation.getSlides();
  for (let i = 0; i < slides.length; ++i) {
    const elements = slides[i].getPageElements();
    for (const el of elements) {
      if (el.getPageElementType() === SlidesApp.PageElementType.SHAPE &&
        el.asShape().getLink() &&
        el.asShape().getLink().getUrl() === BAR_ID) {
        el.remove();
      }
    }
  }
}

অবদানকারী

এই নমুনা Google ডেভেলপার বিশেষজ্ঞদের সাহায্যে Google দ্বারা রক্ষণাবেক্ষণ করা হয়।

পরবর্তী পদক্ষেপ

,

কোডিং লেভেল : ইন্টারমিডিয়েট
সময়কাল : 15 মিনিট
প্রকল্পের ধরন : এডিটর অ্যাড-অন

উদ্দেশ্য

  • বুঝুন সমাধান কি করে।
  • সমাধানের মধ্যে অ্যাপস স্ক্রিপ্ট পরিষেবাগুলি কী করে তা বুঝুন।
  • স্ক্রিপ্ট সেট আপ করুন।
  • স্ক্রিপ্ট চালান।

এই সমাধান সম্পর্কে

আপনার উপস্থাপনায় স্লাইডের নীচে একটি অগ্রগতি বার যোগ করতে এই সমাধানটি ব্যবহার করুন।

প্রোগ্রেস বার স্লাইড এডিটর অ্যাড-অনের স্ক্রিনশট

এটা কিভাবে কাজ করে

স্ক্রিপ্ট প্রেজেন্টেশনে কতগুলি স্লাইড আছে তা গণনা করে এবং প্রতিটি স্লাইডের নীচে একটি আয়তক্ষেত্র আকৃতি যোগ করে। স্লাইডের মধ্যে অগ্রগতি দেখানোর জন্য স্ক্রিপ্ট প্রতিটি আয়তক্ষেত্রের আকারের জন্য প্রস্থ বাড়ায়।

অ্যাপস স্ক্রিপ্ট পরিষেবা

এই সমাধান নিম্নলিখিত পরিষেবা ব্যবহার করে:

  • স্লাইড পরিষেবা - একটি উপস্থাপনার স্লাইড পায় এবং প্রতিটিতে একটি আয়তক্ষেত্র আকৃতি যোগ করে৷

পূর্বশর্ত

এই নমুনা ব্যবহার করতে, আপনার নিম্নলিখিত পূর্বশর্ত প্রয়োজন:

  • একটি Google অ্যাকাউন্ট (Google Workspace অ্যাকাউন্টের জন্য অ্যাডমিনিস্ট্রেটরের অনুমোদনের প্রয়োজন হতে পারে)।
  • ইন্টারনেট অ্যাক্সেস সহ একটি ওয়েব ব্রাউজার।

স্ক্রিপ্ট সেট আপ করুন

  1. প্রগ্রেস বার স্লাইড উপস্থাপনার একটি অনুলিপি করতে নিম্নলিখিত বোতামে ক্লিক করুন। এই সমাধানের জন্য Apps স্ক্রিপ্ট প্রকল্প উপস্থাপনা সংযুক্ত করা হয়েছে.
    একটি কপি করুন
  2. উপস্থাপনায়, এক্সটেনশন > অগ্রগতি বার > অগ্রগতি বারে ক্লিক করুন।
  3. অনুরোধ করা হলে, স্ক্রিপ্ট অনুমোদন করুন. যদি OAuth সম্মতি স্ক্রীন সতর্কতা প্রদর্শন করে, এই অ্যাপটি যাচাই করা হয়নি , তাহলে Advanced > Go to {Project Name} (অনিরাপদ) নির্বাচন করে চালিয়ে যান।

  4. আবার, Extensions > Progress bar > Show Progress bar এ ক্লিক করুন।

  5. অগ্রগতি বার সরাতে, এক্সটেনশন > অগ্রগতি বার > অগ্রগতি বার লুকান ক্লিক করুন।

কোড পর্যালোচনা করুন

এই সমাধানের জন্য অ্যাপস স্ক্রিপ্ট কোড পর্যালোচনা করতে, নীচের উৎস কোড দেখুন ক্লিক করুন:

সোর্স কোড দেখুন

slides/progress/progress.gs
/**
 * @OnlyCurrentDoc Adds progress bars to a presentation.
 */
const BAR_ID = 'PROGRESS_BAR_ID';
const BAR_HEIGHT = 10; // px

/**
 * Runs when the add-on is installed.
 * @param {object} e The event parameter for a simple onInstall trigger. To
 *     determine which authorization mode (ScriptApp.AuthMode) the trigger is
 *     running in, inspect e.authMode. (In practice, onInstall triggers always
 *     run in AuthMode.FULL, but onOpen triggers may be AuthMode.LIMITED or
 *     AuthMode.NONE.)
 */
function onInstall(e) {
  onOpen();
}

/**
 * Trigger for opening a presentation.
 * @param {object} e The onOpen event.
 */
function onOpen(e) {
  SlidesApp.getUi().createAddonMenu()
      .addItem('Show progress bar', 'createBars')
      .addItem('Hide progress bar', 'deleteBars')
      .addToUi();
}

/**
 * Create a rectangle on every slide with different bar widths.
 */
function createBars() {
  deleteBars(); // Delete any existing progress bars
  const presentation = SlidesApp.getActivePresentation();
  const slides = presentation.getSlides();
  for (let i = 0; i < slides.length; ++i) {
    const ratioComplete = (i / (slides.length - 1));
    const x = 0;
    const y = presentation.getPageHeight() - BAR_HEIGHT;
    const barWidth = presentation.getPageWidth() * ratioComplete;
    if (barWidth > 0) {
      const bar = slides[i].insertShape(SlidesApp.ShapeType.RECTANGLE, x, y,
          barWidth, BAR_HEIGHT);
      bar.getBorder().setTransparent();
      bar.setLinkUrl(BAR_ID);
    }
  }
}

/**
 * Deletes all progress bar rectangles.
 */
function deleteBars() {
  const presentation = SlidesApp.getActivePresentation();
  const slides = presentation.getSlides();
  for (let i = 0; i < slides.length; ++i) {
    const elements = slides[i].getPageElements();
    for (const el of elements) {
      if (el.getPageElementType() === SlidesApp.PageElementType.SHAPE &&
        el.asShape().getLink() &&
        el.asShape().getLink().getUrl() === BAR_ID) {
        el.remove();
      }
    }
  }
}

অবদানকারী

এই নমুনা Google ডেভেলপার বিশেষজ্ঞদের সাহায্যে Google দ্বারা রক্ষণাবেক্ষণ করা হয়।

পরবর্তী পদক্ষেপ