স্মার্ট চিপ সহ Google Books থেকে লিঙ্কগুলির পূর্বরূপ দেখুন

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

উদ্দেশ্য

  • অ্যাড-অন কী করে তা বুঝুন।
  • অ্যাপস স্ক্রিপ্ট ব্যবহার করে কীভাবে অ্যাড-অন তৈরি করবেন তা বুঝুন এবং অ্যাপস স্ক্রিপ্ট পরিষেবাগুলি কী করে তা বুঝুন।
  • আপনার পরিবেশ সেট আপ করুন।
  • স্ক্রিপ্ট সেট আপ করুন।
  • স্ক্রিপ্ট চালান।

এই Google Workspace অ্যাড-অন সম্পর্কে

এই নমুনায়, আপনি একটি Google Workspace অ্যাড-অন তৈরি করুন যা Google Docs ডকুমেন্টে Google Books- এর লিঙ্কগুলির প্রিভিউ দেখায়। যখন আপনি একটি ডকুমেন্টে একটি Google Books URL টাইপ বা পেস্ট করেন, তখন অ্যাড-অন লিঙ্কটি সনাক্ত করে এবং একটি লিঙ্কের পূর্বরূপ ট্রিগার করে। লিঙ্কটির পূর্বরূপ দেখতে, আপনি লিঙ্কটিকে একটি স্মার্ট চিপে রূপান্তর করতে পারেন এবং একটি কার্ড দেখতে লিঙ্কটির উপরে পয়েন্টার ধরে রাখতে পারেন যা বই সম্পর্কে আরও তথ্য প্রদর্শন করে।

এই অ্যাড-অন অ্যাপস স্ক্রিপ্টের UrlFetch পরিষেবা ব্যবহার করে Google Books API-এর সাথে সংযোগ করতে এবং Google Docs-এ প্রদর্শনের জন্য Google Books সম্পর্কে তথ্য পেতে।

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

Google Workspace অ্যাড-অন-এর ম্যানিফেস্ট ফাইলে , স্ক্রিপ্ট অ্যাড-অনটিকে Google Docs প্রসারিত করতে কনফিগার করে এবং Google Books ওয়েবসাইট ( https://books.google.com ) থেকে নির্দিষ্ট প্যাটার্নের সাথে মেলে এমন URLগুলির জন্য লিঙ্ক প্রিভিউ ট্রিগার করে।

কোড ফাইলে, স্ক্রিপ্টটি Google Books API-এর সাথে সংযোগ করে এবং বই সম্পর্কে তথ্য পেতে URL ব্যবহার করে (যা Volume রিসোর্সের একটি উদাহরণ)। স্ক্রিপ্টটি একটি স্মার্ট চিপ তৈরি করতে এই তথ্য ব্যবহার করে যা বইয়ের শিরোনাম এবং একটি প্রিভিউ কার্ড প্রদর্শন করে যা একটি সারাংশ, পৃষ্ঠার সংখ্যা, বইয়ের কভারের একটি চিত্র এবং রেটিং সংখ্যা প্রদর্শন করে।

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

এই অ্যাড-অন নিম্নলিখিত পরিষেবাগুলি ব্যবহার করে:

পূর্বশর্ত

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

আপনার পরিবেশ সেট আপ করুন

নিম্নলিখিত বিভাগগুলি অ্যাড-অন তৈরির জন্য আপনার পরিবেশ সেট আপ করে।

Google ক্লাউড কনসোলে আপনার ক্লাউড প্রকল্প খুলুন

যদি এটি ইতিমধ্যে খোলা না থাকে, তাহলে ক্লাউড প্রকল্পটি খুলুন যা আপনি এই নমুনার জন্য ব্যবহার করতে চান:

  1. Google ক্লাউড কনসোলে, একটি প্রকল্প নির্বাচন করুন পৃষ্ঠাতে যান।

    একটি ক্লাউড প্রকল্প নির্বাচন করুন

  2. আপনি যে Google ক্লাউড প্রকল্পটি ব্যবহার করতে চান সেটি নির্বাচন করুন। অথবা, প্রকল্প তৈরি করুন ক্লিক করুন এবং অন-স্ক্রীন নির্দেশাবলী অনুসরণ করুন। আপনি যদি একটি Google ক্লাউড প্রকল্প তৈরি করেন, তাহলে আপনাকে প্রকল্পটির জন্য বিলিং চালু করতে হতে পারে।

Google Books API চালু করুন

এই অ্যাড-অনটি Google Books API-এর সাথে সংযোগ করে। Google API ব্যবহার করার আগে, আপনাকে একটি Google ক্লাউড প্রকল্পে সেগুলি চালু করতে হবে। আপনি একটি একক Google ক্লাউড প্রকল্পে এক বা একাধিক API চালু করতে পারেন৷

এই অ্যাড-অনের জন্য একটি কনফিগার করা সম্মতি স্ক্রীন সহ একটি ক্লাউড প্রকল্প প্রয়োজন৷ OAuth সম্মতি স্ক্রীন কনফিগার করলে Google ব্যবহারকারীদের কাছে কী প্রদর্শন করে তা নির্ধারণ করে এবং আপনার অ্যাপ নিবন্ধন করে যাতে আপনি পরে এটি প্রকাশ করতে পারেন।

  1. Google ক্লাউড কনসোলে, মেনু > API এবং পরিষেবা > OAuth সম্মতি স্ক্রীনে যান।

    OAuth সম্মতি স্ক্রিনে যান

  2. ব্যবহারকারীর প্রকারের জন্য অভ্যন্তরীণ নির্বাচন করুন, তারপরে তৈরি করুন ক্লিক করুন।
  3. অ্যাপ রেজিস্ট্রেশন ফর্মটি পূরণ করুন, তারপর সংরক্ষণ করুন এবং চালিয়ে যান-এ ক্লিক করুন।
  4. আপাতত, আপনি স্কোপ যোগ করা এড়িয়ে যেতে পারেন এবং সেভ এবং কন্টিনিউ এ ক্লিক করতে পারেন। ভবিষ্যতে, যখন আপনি আপনার Google Workspace সংস্থার বাইরে ব্যবহারের জন্য একটি অ্যাপ তৈরি করবেন, তখন আপনাকে অবশ্যই ব্যবহারকারীর ধরন পরিবর্তন করে External তে পরিবর্তন করতে হবে এবং তারপরে, আপনার অ্যাপের প্রয়োজনীয় অনুমোদনের সুযোগ যোগ করতে হবে।

  5. আপনার অ্যাপ নিবন্ধন সারাংশ পর্যালোচনা করুন. পরিবর্তন করতে, সম্পাদনা ক্লিক করুন। অ্যাপ নিবন্ধন ঠিক আছে বলে মনে হলে, ড্যাশবোর্ডে ফিরে যান ক্লিক করুন।

Google Books API-এর জন্য একটি API কী পান

  1. গুগল ক্লাউড কনসোলে যান। নিশ্চিত করুন যে আপনার বিলিং-সক্ষম প্রকল্প খোলা আছে।
  2. Google ক্লাউড কনসোলে, মেনু > APIs & Services > Credentials- এ যান।

    শংসাপত্রে যান

  3. শংসাপত্র তৈরি করুন > API কী ক্লিক করুন।

  4. পরবর্তী ধাপে ব্যবহারের জন্য আপনার API কী নোট করুন।

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

নিম্নলিখিত বিভাগগুলি অ্যাড-অন তৈরির জন্য স্ক্রিপ্ট সেট আপ করে৷

অ্যাপস স্ক্রিপ্ট প্রকল্প তৈরি করুন

  1. Google Books Apps Script প্রকল্প থেকে প্রিভিউ লিঙ্কগুলি খুলতে নিম্নলিখিত বোতামে ক্লিক করুন।
    প্রকল্প খুলুন
  2. ওভারভিউ-এ ক্লিক করুন।
  3. ওভারভিউ পৃষ্ঠায়, ক্লিক করুন একটি অনুলিপি তৈরি করার জন্য আইকন একটি অনুলিপি তৈরি করুন
  4. অ্যাপস স্ক্রিপ্ট প্রকল্পের আপনার অনুলিপিতে, Code.gs ফাইলে যান এবং আপনার আগের বিভাগে তৈরি করা API কী দিয়ে YOUR_API_KEY প্রতিস্থাপন করুন।

ক্লাউড প্রকল্প নম্বর কপি করুন

  1. Google ক্লাউড কনসোলে, মেনু > IAM & Admin > সেটিংসে যান।

    IAM এবং অ্যাডমিন সেটিংসে যান

  2. প্রকল্প নম্বর ক্ষেত্রে, মানটি অনুলিপি করুন।

অ্যাপস স্ক্রিপ্ট প্রকল্পের ক্লাউড প্রকল্প সেট করুন

  1. আপনার Apps স্ক্রিপ্ট প্রকল্পে, ক্লিক করুন প্রকল্প সেটিংসের জন্য আইকন প্রকল্প সেটিংস
  2. Google ক্লাউড প্ল্যাটফর্ম (GCP) প্রকল্পের অধীনে, প্রকল্প পরিবর্তন করুন ক্লিক করুন।
  3. GCP প্রকল্প নম্বরে , Google ক্লাউড প্রকল্প নম্বর পেস্ট করুন।
  4. সেট প্রকল্প ক্লিক করুন.

অ্যাড-অন পরীক্ষা করুন

নিম্নলিখিত বিভাগগুলি আপনার তৈরি করা অ্যাড-অন পরীক্ষা করে।

একটি পরীক্ষা স্থাপনা ইনস্টল করুন

  1. আপনার Apps স্ক্রিপ্ট প্রজেক্টে, এডিটরে ক্লিক করুন।
  2. পূর্ববর্তী বিভাগে তৈরি Google Books API-এর জন্য API কী দিয়ে YOUR_API_KEY প্রতিস্থাপন করুন।
  3. Deploy > Test deployments এ ক্লিক করুন।
  4. ইনস্টল > সম্পন্ন ক্লিক করুন।
  1. docs.new এ একটি Google ডক্স ডকুমেন্ট তৈরি করুন।
  2. নথিতে নিম্নলিখিত URLটি আটকান, এবং URLটিকে একটি স্মার্ট চিপে রূপান্তর করতে ট্যাব কী টিপুন: https://www.google.com/books/edition/Software_Engineering_at_Google/V3TTDwAAQBAJ
  3. পয়েন্টারটি স্মার্ট চিপের উপরে ধরে রাখুন এবং যখন অনুরোধ করা হয়, অ্যাড-অন চালানোর জন্য অ্যাক্সেস অনুমোদন করুন। প্রিভিউ কার্ড বই সম্পর্কে তথ্য প্রদর্শন করে।

নিম্নলিখিত চিত্রটি লিঙ্কের পূর্বরূপ দেখায়:

বইটির একটি লিঙ্ক প্রিভিউ, Google এ সফটওয়্যার ইঞ্জিনিয়ারিং।

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

এই অ্যাড-অনের জন্য অ্যাপস স্ক্রিপ্ট কোড পর্যালোচনা করতে, বিভাগটি প্রসারিত করতে উৎস কোড দেখুন ক্লিক করুন:

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

appsscript.json

solutions/add-on/book-smartchip/appsscript.json
{
  "timeZone": "America/Los_Angeles",
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8",
  "oauthScopes": [
    "https://www.googleapis.com/auth/workspace.linkpreview",
    "https://www.googleapis.com/auth/script.external_request"
  ],
  "urlFetchWhitelist": [
    "https://www.googleapis.com/books/v1/volumes/"
  ],
  "addOns": {
    "common": {
      "name": "Preview Books Add-on",
      "logoUrl": "https://developers.google.com/workspace/add-ons/images/library-icon.png",
      "layoutProperties": {
        "primaryColor": "#dd4b39"
      }
    },
    "docs": {
      "linkPreviewTriggers": [
        {
          "runFunction": "bookLinkPreview",
          "patterns": [
            {
              "hostPattern": "*.google.*",
              "pathPrefix": "books"
            },
            {
              "hostPattern": "*.google.*",
              "pathPrefix": "books/edition"
            }
          ],
          "labelText": "Book",
          "logoUrl": "https://developers.google.com/workspace/add-ons/images/book-icon.png",
          "localizedLabelText": {
            "es": "Libros"
          }
        }
      ]
    }
  }
}

Code.gs

সমাধান/add-on/book-smartchip/Code.js
function getBook(id) {
  const apiKey = 'YOUR_API_KEY'; // Replace with your API key
  const apiEndpoint = `https://www.googleapis.com/books/v1/volumes/${id}?key=${apiKey}&country=US`;
  const response = UrlFetchApp.fetch(apiEndpoint);
  return JSON.parse(response);
}

function bookLinkPreview(event) {
 if (event.docs.matchedUrl.url) {
    const segments = event.docs.matchedUrl.url.split('/');
    const volumeID = segments[segments.length - 1];

    const bookData = getBook(volumeID);
    const bookTitle = bookData.volumeInfo.title;
    const bookDescription = bookData.volumeInfo.description;
    const bookImage = bookData.volumeInfo.imageLinks.small;
    const bookAuthors = bookData.volumeInfo.authors;
    const bookPageCount = bookData.volumeInfo.pageCount;

    const previewHeader = CardService.newCardHeader()
      .setSubtitle('By ' + bookAuthors)
      .setTitle(bookTitle);

    const previewPages = CardService.newDecoratedText()
      .setTopLabel('Page count')
      .setText(bookPageCount);

    const previewDescription = CardService.newDecoratedText()
      .setTopLabel('About this book')
      .setText(bookDescription).setWrapText(true);

    const previewImage = CardService.newImage()
      .setAltText('Image of book cover')
      .setImageUrl(bookImage);

    const buttonBook = CardService.newTextButton()
      .setText('View book')
      .setOpenLink(CardService.newOpenLink()
        .setUrl(event.docs.matchedUrl.url));

    const cardSectionBook = CardService.newCardSection()
      .addWidget(previewImage)
      .addWidget(previewPages)
      .addWidget(CardService.newDivider())
      .addWidget(previewDescription)
      .addWidget(buttonBook);

    return CardService.newCardBuilder()
    .setHeader(previewHeader)
    .addSection(cardSectionBook)
    .build();
  }
}