Google পত্রক এবং স্লাইড ব্যবহার করে আপনার বড় ডেটাকে অন্তর্দৃষ্টিতে পরিণত করুন৷

1. বড় তথ্য বিশ্লেষণ থেকে স্লাইড উপস্থাপনা

ডেটা বিজ্ঞানীদের জন্য বড় ডেটা বিশ্লেষণ করার জন্য অনেকগুলি সরঞ্জাম রয়েছে, তবে শেষ পর্যন্ত বিশ্লেষকদের এখনও পরিচালনার ফলাফলকে ন্যায্যতা দিতে হবে। কাগজে বা ডাটাবেসে প্রচুর সংখ্যা মূল স্টেকহোল্ডারদের কাছে খুব কমই উপস্থাপনযোগ্য। এই মধ্যবর্তী Google Apps স্ক্রিপ্ট কোডল্যাবটি 2টি Google ডেভেলপার প্ল্যাটফর্ম ( Google Workspace এবং Google Cloud Console ) ব্যবহার করে আপনাকে সেই চূড়ান্ত স্ট্রেচটি স্বয়ংক্রিয় করতে সাহায্য করে।

Google ক্লাউডের বিকাশকারী সরঞ্জামগুলি আপনাকে গভীর ডেটা বিশ্লেষণ করতে দেয়৷ তারপরে আপনি ফলাফলগুলি নিতে পারেন, সেগুলিকে একটি স্প্রেডশীটে সন্নিবেশ করতে পারেন এবং ডেটা সহ একটি স্লাইড উপস্থাপনা তৈরি করতে পারেন৷ এটি ব্যবস্থাপনায় ডেটা সরবরাহ করার জন্য আরও উপযুক্ত উপায় সরবরাহ করে। এই কোডল্যাবটি ক্লাউড কনসোলের BigQuery API (একটি Apps স্ক্রিপ্ট উন্নত পরিষেবা হিসাবে) এবং Google পত্রক এবং Google স্লাইডের জন্য অন্তর্নির্মিত Apps স্ক্রিপ্ট পরিষেবাগুলিকে কভার করে৷

প্রেরণা

এই কোডল্যাবের নমুনা অ্যাপটি এই অন্যান্য কোড নমুনা দ্বারা অনুপ্রাণিত হয়েছিল:

স্লাইডস এপিআই কোডল্যাব নমুনা অ্যাপটিতে BigQuery এবং স্লাইডগুলিও রয়েছে, এটি এই কোডল্যাবের নমুনা অ্যাপ থেকে বিভিন্ন উপায়ে আলাদা:

  • তাদের Node.js অ্যাপ বনাম আমাদের অ্যাপস স্ক্রিপ্ট অ্যাপ।
  • আমরা অ্যাপস স্ক্রিপ্ট পরিষেবা ব্যবহার করার সময় তারা REST API ব্যবহার করে।
  • তারা Google ড্রাইভ ব্যবহার করে কিন্তু Google পত্রক নয় যেখানে এই অ্যাপটি শীট ব্যবহার করে কিন্তু ড্রাইভ নয়।

এই কোডল্যাবের জন্য, আমরা Google ক্লাউড জুড়ে বৈশিষ্ট্য এবং APIগুলিকে এমনভাবে প্রদর্শন করার সময় একটি একক অ্যাপে একাধিক প্রযুক্তিকে একত্রিত করতে চেয়েছিলাম যা বাস্তব জীবনের ব্যবহারের ক্ষেত্রে অনুরূপ। লক্ষ্য হল আপনাকে আপনার কল্পনাশক্তি ব্যবহার করতে অনুপ্রাণিত করা এবং আপনার প্রতিষ্ঠান এবং আপনার গ্রাহকদের জন্য চ্যালেঞ্জিং সমস্যা সমাধানের জন্য Cloud Console এবং Google Workspace উভয়ই ব্যবহার করার কথা বিবেচনা করা।

আপনি কি শিখবেন

  • একাধিক Google পরিষেবার সাথে Google Apps Script কীভাবে ব্যবহার করবেন
  • বড় ডেটা বিশ্লেষণ করতে Google BigQuery কীভাবে ব্যবহার করবেন
  • কীভাবে একটি গুগল শীট তৈরি করবেন এবং এতে ডেটা সন্নিবেশ করবেন
  • কিভাবে শীটে একটি চার্ট তৈরি করবেন
  • পত্রক থেকে Google স্লাইড উপস্থাপনায় কীভাবে ডেটা এবং চার্ট স্থানান্তর করা যায়

আপনি কি প্রয়োজন হবে

  • ইন্টারনেট অ্যাক্সেস সহ একটি ওয়েব ব্রাউজার
  • একটি Google অ্যাকাউন্ট (Google Workspace অ্যাকাউন্টের জন্য অ্যাডমিনিস্ট্রেটরের অনুমোদনের প্রয়োজন হতে পারে)
  • Google পত্রকের সাথে প্রাথমিক পরিচিতি
  • পত্রক A1 স্বরলিপি পড়ার ক্ষমতা
  • বেসিক জাভাস্ক্রিপ্ট দক্ষতা
  • অ্যাপস স্ক্রিপ্ট বিকাশের জ্ঞান সহায়ক কিন্তু প্রয়োজনীয় নয়

2. সমীক্ষা

আপনি কিভাবে এই কোডল্যাব/টিউটোরিয়াল ব্যবহার করবেন?

তথ্যগত উদ্দেশ্যে এটির মাধ্যমে পড়ুন, সম্ভবত প্রযুক্তিগত সহকর্মীদের কাছে এটি প্রেরণ করুন আমি যতদূর পারি এটির মধ্য দিয়ে যান এবং যতটা সম্ভব ব্যায়াম করার চেষ্টা করুন নরক বা উচ্চ জল, আমি সম্পূর্ণ কোডল্যাব সম্পূর্ণ করতে যাচ্ছি

Google Workspace ডেভেলপার টুল এবং API-এর সাথে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবে?

নবজাতক মধ্যবর্তী দক্ষ

অ্যাপস স্ক্রিপ্টের সাথে আপনার অভিজ্ঞতাকে বিশেষভাবে কীভাবে মূল্যায়ন করবেন?

নবজাতক মধ্যবর্তী দক্ষ

ক্লাউড কনসোল ডেভেলপার টুল এবং এপিআই-এর সাথে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবে?

নবজাতক মধ্যবর্তী দক্ষ

3. ওভারভিউ

এখন যেহেতু আপনি জানেন যে এই কোডল্যাবটি কী, আপনি যা করতে যাচ্ছেন তা এখানে:

  1. একটি বিদ্যমান Apps Script-BigQuery নমুনা নিন এবং এটি কাজ করা শুরু করুন।
  2. নমুনা থেকে, কীভাবে BigQuery-এ একটি প্রশ্ন পাঠাতে হয় এবং ফলাফলগুলি পেতে হয় তা শিখুন।
  3. একটি Google পত্রক তৈরি করুন এবং এতে BigQuery থেকে ফলাফল সন্নিবেশ করুন৷
  4. প্রত্যাবর্তনকৃত এবং শিটে ঢোকানো ডেটা সামান্য পরিবর্তন করতে কোডটি পরিবর্তন করুন।
  5. BigQuery ডেটার জন্য একটি চার্ট তৈরি করতে Apps স্ক্রিপ্টে পত্রক পরিষেবা ব্যবহার করুন।
  6. একটি Google স্লাইড উপস্থাপনা তৈরি করতে স্লাইড পরিষেবা ব্যবহার করুন৷
  7. ডিফল্ট শিরোনাম স্লাইডে একটি শিরোনাম এবং উপশিরোনাম যোগ করুন।
  8. একটি ডেটা টেবিলের সাথে একটি স্লাইড তৈরি করুন এবং এতে পত্রকের ডেটা সেলগুলি রপ্তানি করুন৷
  9. আরেকটি স্লাইড তৈরি করুন এবং এতে স্প্রেডশীট চার্ট সন্নিবেশ করুন।

আসুন Apps Script, BigQuery, Sheets এবং Slides-এ কিছু পটভূমির তথ্য দিয়ে শুরু করা যাক।

Google Apps স্ক্রিপ্ট এবং BigQuery

Google Apps Script হল একটি Google Workspace ডেভেলপমেন্ট প্ল্যাটফর্ম যা Google REST API-এর থেকে উচ্চ স্তরে কাজ করে। এটি একটি সার্ভারহীন বিকাশ এবং অ্যাপ্লিকেশন হোস্টিং পরিবেশ যা সমস্ত বিকাশকারী দক্ষতা স্তরে অ্যাক্সেসযোগ্য। মূলত, Apps Script হল Google Workspace অটোমেশন, এক্সটেনশন এবং ইন্টিগ্রেশনের জন্য সার্ভারবিহীন জাভাস্ক্রিপ্ট রানটাইম।

এটি Node.js-এর মতো সার্ভার-সাইড জাভাস্ক্রিপ্ট ব্যবহার করে, কিন্তু দ্রুত, অ্যাসিঙ্ক্রোনাস ইভেন্ট-চালিত অ্যাপ্লিকেশন হোস্টিংয়ের পরিবর্তে Google Workspace এবং অন্যান্য Google পরিষেবাগুলির সাথে শক্ত একীকরণের উপর ফোকাস করে। এটিতে একটি উন্নয়ন পরিবেশও রয়েছে যা আপনি যা ব্যবহার করছেন তার থেকে আলাদা হতে পারে। Apps স্ক্রিপ্ট সহ, আপনি:

  • একটি ব্রাউজার-ভিত্তিক কোড এডিটর ব্যবহার করে স্ক্রিপ্টগুলি বিকাশ করুন কিন্তু Apps স্ক্রিপ্টের জন্য কমান্ড-লাইন স্থাপনার সরঞ্জাম clasp ব্যবহার করার সময় স্থানীয়ভাবেও বিকাশ করতে পারে৷
  • Google Workspace এবং অন্যান্য Google বা বাহ্যিক পরিষেবাগুলি অ্যাক্সেস করার জন্য কাস্টমাইজ করা JavaScript-এর একটি বিশেষ সংস্করণে কোড লিখুন (Apps Script-এর URL Fetch বা JDBC পরিষেবা ব্যবহার করে)।
  • অ্যাপস্ স্ক্রিপ্ট আপনার জন্য এটি পরিচালনা করে বলে অনুমোদন কোড লেখা এড়াতে পারে।
  • আপনার অ্যাপ হোস্ট করতে হবে না—এটি ক্লাউডে Google-এর সার্ভারে থাকে এবং চলে।

অ্যাপস স্ক্রিপ্ট 2টি ভিন্ন উপায়ে অন্যান্য Google প্রযুক্তির সাথে ইন্টারফেস করে:

  • একটি অন্তর্নির্মিত পরিষেবা হিসাবে
  • একটি উন্নত পরিষেবা হিসাবে

একটি অন্তর্নির্মিত পরিষেবাতে ব্যবহারকারীর ডেটা, অন্যান্য Google সিস্টেম এবং বহিরাগত সিস্টেমগুলির সাথে ইন্টারঅ্যাক্ট করার জন্য উচ্চ-স্তরের পদ্ধতি রয়েছে৷ একটি উন্নত পরিষেবা মূলত একটি Google Workspace API বা Google REST API এর চারপাশে একটি পাতলা মোড়ক। উন্নত পরিষেবাগুলি REST API-এর সম্পূর্ণ কভারেজ প্রদান করে এবং প্রায়শই অন্তর্নির্মিত পরিষেবাগুলির চেয়ে বেশি কিছু করতে পারে, তবে তাদের আরও কোড জটিলতার প্রয়োজন হয় (যদিও সম্পূর্ণ REST API থেকে ব্যবহার করা সহজ)। উন্নত পরিষেবাগুলি ব্যবহার করার আগে একটি স্ক্রিপ্ট প্রকল্পের জন্যও চালু করা আবশ্যক৷

যখন সম্ভব, বিকাশকারীদের একটি অন্তর্নির্মিত পরিষেবা ব্যবহার করা উচিত কারণ তারা ব্যবহার করা সহজ এবং তারা উন্নত পরিষেবাগুলির চেয়ে বেশি করে৷ যাইহোক, কিছু Google API-এর বিল্ট-ইন পরিষেবা নেই, তাই একটি উন্নত পরিষেবাই একমাত্র বিকল্প হতে পারে। উদাহরণস্বরূপ, Google BigQuery এর কোনো অন্তর্নির্মিত পরিষেবা নেই, কিন্তু BigQuery পরিষেবা বিদ্যমান। BigQuery পরিষেবা হল একটি ক্লাউড কনসোল পরিষেবা যা আপনাকে Google BigQuery API ব্যবহার করে বৃহৎ ডেটা কর্পাসগুলিতে (উদাহরণস্বরূপ, একাধিক টেরাবাইট) প্রশ্নগুলি সম্পাদন করতে দেয় তবুও এটি সেকেন্ডের মধ্যে ফলাফল প্রদান করতে পারে৷

Apps স্ক্রিপ্ট থেকে শীট এবং স্লাইড অ্যাক্সেস করুন

BigQuery এর বিপরীতে, পত্রক এবং স্লাইড উভয়েই বিল্ট-ইন পরিষেবা রয়েছে৷ শুধুমাত্র API-তে পাওয়া বৈশিষ্ট্যগুলি অ্যাক্সেস করার জন্য তাদের উন্নত পরিষেবাও রয়েছে। কোডে যাওয়ার আগে বিল্ট-ইন শীট এবং স্লাইড উভয় পরিষেবার জন্য ডক্স দেখুন। মনে রাখবেন পত্রক এবং স্লাইড উভয়ের উন্নত পরিষেবাগুলির জন্য ডক্সও রয়েছে৷

4. টাস্ক 1: BigQuery চালান এবং পত্রকগুলিতে ফলাফল লগ করুন৷

ভূমিকা

আমরা এই প্রথম কাজটি দিয়ে এই কোডল্যাবের একটি বড় অংশ করতে যাচ্ছি। আসলে, আপনি একবার পার হয়ে গেলে, আপনি পুরো কোডল্যাবের সাথে প্রায় অর্ধেক হয়ে যাবেন। কয়েকটি উপধারায় বিভক্ত, আপনি পাবেন:

  • একটি Google Apps স্ক্রিপ্ট এবং ক্লাউড কনসোল উভয় প্রকল্প তৈরি করুন৷
  • BigQuery উন্নত পরিষেবাতে অ্যাক্সেস চালু করুন।
  • স্ক্রিপ্ট এডিটর খুলুন এবং অ্যাপ্লিকেশন সোর্স কোড লিখুন।
  • অ্যাপ অনুমোদন প্রক্রিয়া নেভিগেট করুন (OAuth2)।
  • যে অ্যাপ্লিকেশনটি BigQuery-এ একটি অনুরোধ পাঠায় সেটি চালান।
  • BigQuery ফলাফল ব্যবহার করে তৈরি করা নতুন Google পত্রক পর্যালোচনা করুন।

সেটআপ

  1. একটি Apps স্ক্রিপ্ট প্রকল্প তৈরি করতে, script.google.com এ যান এবং নতুন প্রকল্পে ক্লিক করুন।
  2. আপনার Apps স্ক্রিপ্ট প্রকল্পের নাম পরিবর্তন করতে, শিরোনামহীন প্রকল্পে ক্লিক করুন, আপনার প্রকল্পের জন্য একটি শিরোনাম লিখুন এবং পুনঃনামকরণ ক্লিক করুন৷

এরপর, BigQuery-এ ডেটা অনুসন্ধান করার জন্য আপনাকে একটি ক্লাউড কনসোল প্রকল্প তৈরি করতে হবে।

  1. একটি ক্লাউড কনসোল প্রকল্প তৈরি করতে, একটি প্রকল্প তৈরি করতে এই শর্টকাট লিঙ্কটি ব্যবহার করুন, প্রকল্পটিকে একটি নাম দিন এবং তৈরি করুন ক্লিক করুন৷
  1. প্রকল্প তৈরি সম্পূর্ণ হলে, পৃষ্ঠায় একটি বিজ্ঞপ্তি প্রদর্শিত হবে। নিশ্চিত করুন যে আপনার নতুন প্রকল্পটি পৃষ্ঠার শীর্ষে প্রজেক্ট তালিকায় নির্বাচিত হয়েছে।
  2. মেনুতে ক্লিক করুন f5fbd278915eb7aa.png এবং APIs এবং পরিষেবাগুলি > OAuth সম্মতি স্ক্রীনে যান ( সরাসরি লিঙ্ক )।
  3. আপনার প্রতিষ্ঠানের মধ্যে Google Workspace ব্যবহারকারীদের জন্য একটি অ্যাপ তৈরি করতে অভ্যন্তরীণ > তৈরি করুন-এ ক্লিক করুন।
  4. অ্যাপের নামের ক্ষেত্রে, "বিগ ডেটা কোডল্যাব" লিখুন।
  5. ব্যবহারকারী সমর্থন এবং বিকাশকারী যোগাযোগ তথ্য ক্ষেত্রের জন্য যোগাযোগ ইমেল লিখুন.
  6. Save and continue > Save and continue-এ ক্লিক করুন।
  7. আরো ক্লিক করুন 50fa7e30ed2d1b1c.png নেভিগেশন বারে এবং প্রজেক্ট সেটিংস নির্বাচন করুন ( সরাসরি লিঙ্ক )।
  8. প্রকল্প নম্বরের অধীনে তালিকাভুক্ত মানটি অনুলিপি করুন। (কোডল্যাবে পরে একটি পৃথক প্রজেক্ট আইডি ক্ষেত্র ব্যবহার করা হয়।)

এর পরে, আপনি আপনার অ্যাপস স্ক্রিপ্ট প্রকল্পটিকে ক্লাউড কনসোল প্রকল্পের সাথে সংযুক্ত করবেন।

  1. অ্যাপ স্ক্রিপ্ট এডিটরে স্যুইচ করুন এবং প্রজেক্ট সেটিংসে ক্লিক করুন সেটিংস-গিয়ার .
  2. Google ক্লাউড প্ল্যাটফর্ম (GCP) প্রকল্পের অধীনে, প্রকল্প পরিবর্তন করুন ক্লিক করুন।
  3. প্রকল্প নম্বর লিখুন এবং সেট প্রকল্প ক্লিক করুন.
  4. এরপরে, Editor এ ক্লিক করুন কোড-সম্পাদক BigQuery উন্নত পরিষেবা যোগ করা শুরু করতে।
  5. পরিষেবাগুলির পাশে, একটি পরিষেবা যোগ করুন ক্লিক করুন৷ একটি পরিষেবা যোগ করুন .
  6. একটি পরিষেবা যোগ করুন ডায়ালগে, BigQuery API নির্বাচন করুন এবং যোগ করুন ক্লিক করুন।

চূড়ান্ত ধাপ হল ক্লাউড কনসোলে BigQuery API চালু করা।

  1. এটি করতে, ক্লাউড কনসোলে স্যুইচ করুন এবং APIs এবং পরিষেবাগুলি > ড্যাশবোর্ডে ক্লিক করুন। (নিশ্চিত করুন যে আপনি এখনও একই প্রকল্পে আছেন যা আপনি ধাপ 3 এ তৈরি করেছেন।)
  2. API এবং পরিষেবাগুলি সক্ষম করুন ক্লিক করুন৷
  3. "বিগ কোয়েরি" অনুসন্ধান করুন, BigQuery API নির্বাচন করুন ( BigQuery ডেটা স্থানান্তর API নয় ) এবং এটি চালু করতে সক্ষম করুন ক্লিক করুন৷

a0e07fa159de9367.png

আপনি এখন অ্যাপ্লিকেশন কোড প্রবেশ করতে প্রস্তুত, অনুমোদন প্রক্রিয়ার মধ্য দিয়ে যান এবং এই অ্যাপ্লিকেশনটির কাজ করার প্রথম পুনরাবৃত্তি পান৷

অ্যাপ্লিকেশনটি আপলোড করুন এবং এটি চালান

  1. স্ক্রিপ্ট এডিটরে, ডিফল্ট myFunction() কোড ব্লককে নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন:
// File name for data results
var QUERY_NAME = "Most common words in all of Shakespeare's works";
// Replace this value with your Google Cloud Console Project ID
var PROJECT_ID = '';
if (!PROJECT_ID) throw Error('Project ID is required in setup');

/**
 * Runs a BigQuery query; puts results into a Sheet. You must turn on
 * the BigQuery advanced service before you can run this code.
 * @see https://developers.google.com/apps-script/advanced/bigquery#run_query
 * @see https://github.com/googleworkspace/apps-script-samples/blob/master/advanced/bigquery.gs
 *
 * @returns {Spreadsheet} Returns a spreadsheet with BigQuery results
 * @see https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet
 */
function runQuery() {
  // Replace sample with your own BigQuery query.
  var request = {
    query:
        'SELECT ' +
            'LOWER(word) AS word, ' +
            'SUM(word_count) AS count ' +
        'FROM [bigquery-public-data:samples.shakespeare] ' +
        'GROUP BY word ' +
        'ORDER BY count ' +
        'DESC LIMIT 10'
  };
  var queryResults = BigQuery.Jobs.query(request, PROJECT_ID);
  var jobId = queryResults.jobReference.jobId;

  // Wait for BigQuery job completion (with exponential backoff).
  var sleepTimeMs = 500;
  while (!queryResults.jobComplete) {
    Utilities.sleep(sleepTimeMs);
    sleepTimeMs *= 2;
    queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId);
  }

  // Get all results from BigQuery.
  var rows = queryResults.rows;
  while (queryResults.pageToken) {
    queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId, {
      pageToken: queryResults.pageToken
    });
    rows = rows.concat(queryResults.rows);
  }

  // Return null if no data returned.
  if (!rows) {
    return Logger.log('No rows returned.');
  }

  // Create the results spreadsheet.
  var spreadsheet = SpreadsheetApp.create(QUERY_NAME);
  var sheet = spreadsheet.getActiveSheet();

  // Add headers to Sheet.
  var headers = queryResults.schema.fields.map(function(field) {
    return field.name.toUpperCase();
  });
  sheet.appendRow(headers);

  // Append the results.
  var data = new Array(rows.length);
  for (var i = 0; i < rows.length; i++) {
    var cols = rows[i].f;
    data[i] = new Array(cols.length);
    for (var j = 0; j < cols.length; j++) {
      data[i][j] = cols[j].v;
    }
  }

  // Start storing data in row 2, col 1
  var START_ROW = 2;      // skip header row
  var START_COL = 1;
  sheet.getRange(START_ROW, START_COL, rows.length, headers.length).setValues(data);

  Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl());
}
  1. Save এ ক্লিক করুন সংরক্ষণ .
  2. Code.gs পাশে, আরও ক্লিক করুন 50fa7e30ed2d1b1c.png > নাম পরিবর্তন করুনCode.gs থেকে bq-sheets-slides.js শিরোনাম পরিবর্তন করুন।
  3. এর পরে, আসুন সেই কোডটি পর্যালোচনা করি যা BigQuery জিজ্ঞাসা করে এবং ফলাফলগুলি একটি Google পত্রকে লিখে। আপনি runQuery() এর শীর্ষের কাছে এটি দেখতে পারেন:
SELECT
    LOWER(word) AS word,
    SUM(word_count) AS count
FROM [bigquery-public-data:samples.shakespeare]
GROUP BY word
ORDER BY count
DESC LIMIT 10

এই ক্যোয়ারীটি শেক্সপিয়রের কাজগুলিকে দেখে, BigQuery-এর পাবলিক ডেটাসেটের অংশ, এবং জনপ্রিয়তার ক্রমানুসারে বাছাই করা তাঁর সমস্ত রচনায় সর্বাধিক ঘন ঘন প্রদর্শিত শীর্ষ 10টি শব্দ তৈরি করে৷ বিগকুয়েরি কতটা কার্যকর হতে পারে তার একটা ধারণা আপনি পেয়ে যাবেন যখন আপনি কল্পনা করেন যে হাতে এই সংকলনটি করা কতটা কাজ হবে।

ফাংশনটি একটি PROJECT_ID ভেরিয়েবলও ঘোষণা করে যার জন্য একটি বৈধ ক্লাউড কনসোল প্রকল্প আইডি প্রয়োজন৷ ভেরিয়েবলের অধীনে if স্টেটমেন্টটি রয়েছে যাতে প্রজেক্ট আইডি ছাড়া অ্যাপ্লিকেশনটিকে এগিয়ে যাওয়া থেকে বিরত রাখা যায়।

  1. আপনার ক্লাউড কনসোল প্রকল্পে স্যুইচ করুন, আরও ক্লিক করুন 50fa7e30ed2d1b1c.png নেভিগেশন বারে, এবং প্রজেক্ট সেটিংস নির্বাচন করুন।
  2. প্রজেক্ট আইডির অধীনে তালিকাভুক্ত মানটি অনুলিপি করুন।
  3. অ্যাপ স্ক্রিপ্ট সম্পাদকে ফিরে যান, bq-sheets-slides.jsPROJECT_ID ভেরিয়েবলটি সনাক্ত করুন এবং মান যোগ করুন।
  4. Save এ ক্লিক করুন সংরক্ষণ > দৌড়াও
  5. চালিয়ে যেতে অনুমতি পর্যালোচনা ক্লিক করুন.
  1. একবার স্ক্রিপ্ট চলতে শুরু করলে, বিল্ট-ইন এক্সিকিউশন লগ খোলে এবং রিয়েল টাইমে স্ক্রিপ্ট অ্যাকশন লগ করে।
  1. একবার এক্সিকিউশন লগটি "এক্সিকিউশন সম্পন্ন" হয়ে গেলে, আপনার Google ড্রাইভে যান ( drive.google.com ) এবং "শেক্সপিয়ারের সমস্ত কাজের মধ্যে সবচেয়ে সাধারণ শব্দ" নামে Google পত্রকটি খুঁজুন (অথবা আপনি যে নামটি QUERY_NAME ভেরিয়েবলে অ্যাসাইন করেছেন, যদি আপনি এটি আপডেট করেছেন):
  2. 10টি সবচেয়ে সাধারণ শব্দ দেখতে স্প্রেডশীট খুলুন এবং তাদের মোট গণনা নিচের ক্রমে সাজানো হয়েছে:

afe500ad43f8cdf8.png

টাস্ক 1 সারাংশ

পর্যালোচনা করার জন্য, আপনি এমন কিছু কোড চালিয়েছেন যা প্রতিটি নাটকের প্রতিটি শব্দের দিকে তাকিয়ে শেক্সপিয়রের সমস্ত কাজ জিজ্ঞাসা করেছিল। এটি শব্দগুলিকে গণনা করে এবং তাদের উপস্থিতির ক্রমানুসারে সাজিয়েছে। আপনি এই ডেটা প্রদর্শন করতে Google পত্রকের জন্য অন্তর্নির্মিত Apps স্ক্রিপ্ট পরিষেবাও ব্যবহার করেছেন৷

আপনি bq-sheets-slides.js এর জন্য যে কোডটি ব্যবহার করেছেন তা এই কোডল্যাবের গিটহাব সংগ্রহস্থলের step1 ফোল্ডারে github.com/googlecodelabs/bigquery-sheets-slides- এ পাওয়া যাবে। কোডটি BigQuery উন্নত পরিষেবা পৃষ্ঠার এই আসল উদাহরণ দ্বারা অনুপ্রাণিত হয়েছিল যা শেক্সপিয়ারের ব্যবহৃত 10 বা তার বেশি অক্ষর সহ সবচেয়ে জনপ্রিয় শব্দগুলি পুনরুদ্ধার করে একটি সামান্য ভিন্ন কোয়েরি চালায়। আপনি এর GitHub রেপোতে একটি উদাহরণও দেখতে পারেন।

আপনি যদি শেক্সপিয়রের কাজ, বা অন্যান্য পাবলিক ডেটা টেবিলের সাহায্যে তৈরি করতে পারেন এমন অন্যান্য কোয়েরিতে আগ্রহী হন, তাহলে BigQuery নমুনা টেবিল এবং এই GitHub রেপোতে কীভাবে প্রশ্ন করবেন তা দেখুন।

অ্যাপস্ স্ক্রিপ্টে চালানোর আগে আপনি ক্লাউড কনসোলে BigQuery পৃষ্ঠা ব্যবহার করে প্রশ্নগুলি চালাতে পারেন। এটি খুঁজে পেতে, মেনুতে ক্লিক করুন f5fbd278915eb7aa.png এবং BigQuery UI > SQL ওয়ার্কস্পেস ( সরাসরি লিঙ্ক ) এ যান। উদাহরণস্বরূপ, BigQuery গ্রাফিকাল ইন্টারফেসে আমাদের কোয়েরি কীভাবে প্রদর্শিত হয় তা এখানে:

BigQueryUI

5. টাস্ক 2: গুগল শীটে একটি চার্ট তৈরি করুন

runQuery() এর উদ্দেশ্য হল BigQuery ব্যবহার করা এবং এর ডেটা ফলাফল Google Sheet-এ পাঠানো। পরবর্তীতে আমাদের ডেটা ব্যবহার করে একটি চার্ট তৈরি করতে হবে। createColumnChart() নামে একটি নতুন ফাংশন তৈরি করা যাক যা শীট-এর newChart() পদ্ধতিকে কল করে।

  1. Apps স্ক্রিপ্ট এডিটরে, createColumnChart() ফাংশনটি bq-sheets-slides.jsrunQuery() এর পরে যোগ করুন। কোডটি শীট পায় এবং সমস্ত ডেটা সহ একটি কলামার চার্টের অনুরোধ করে। প্রথম সারিতে কলাম শিরোনাম ধারণ করার পর থেকে ডেটা পরিসীমা সেল A2 থেকে শুরু হয়।
/**
 * Uses spreadsheet data to create a column chart.
 * @param {Spreadsheet} Spreadsheet containing results data
 * @returns {EmbeddedChart} Visualizes the results
 * @see https://developers.google.com/apps-script/reference/spreadsheet/embedded-chart
 */
function createColumnChart(spreadsheet) {
  // Retrieve the populated (first) Sheet.
  var sheet = spreadsheet.getSheets()[0];
  // Data range in Sheet is from cell A2 to B11.
  var START_CELL = 'A2';  // skip header row
  var END_CELL = 'B11';
  // Place chart on Sheet starting on cell E5.
  var START_ROW = 5;      // row 5
  var START_COL = 5;      // col E
  var OFFSET = 0;

  // Create & place chart on the Sheet using above values.
  var chart = sheet.newChart()
     .setChartType(Charts.ChartType.COLUMN)
     .addRange(sheet.getRange(START_CELL + ':' + END_CELL))
     .setPosition(START_ROW, START_COL, OFFSET, OFFSET)
     .build();
  sheet.insertChart(chart);
}
  1. createColumnChart() ফাংশনের জন্য একটি স্প্রেডশিট অবজেক্ট প্যারামিটার প্রয়োজন, তাই আমরা createColumnChart() () এ পাস করতে পারি এমন একটি spreadsheet অবজেক্ট ফেরত দিতে আমাদের runQuery() আপডেট করতে হবে। runQuery() এর শেষে, শীটটির সফল নির্মাণ লগিং করার পরে spreadsheet বস্তুটি ফেরত দিন:
  Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl());

  // NEW: Return the spreadsheet object for later use.
  return spreadsheet;
}
  1. runQuery() এবং createColumnChart() উভয়কে কল করতে একটি createBigQueryPresentation() ফাংশন তৈরি করুন। BigQuery এবং চার্ট তৈরির কার্যকারিতাকে যৌক্তিকভাবে আলাদা করা সেরা অনুশীলন:
/**
 * Runs the query, adds data and a chart to a spreadsheet.
 */
function createBigQueryPresentation() {
  var spreadsheet = runQuery();
  createColumnChart(spreadsheet);
}
  1. আপনি উপরে 2টি গুরুত্বপূর্ণ পদক্ষেপ নিয়েছেন: স্প্রেডশীট অবজেক্ট ফিরিয়ে দেওয়া এবং এন্ট্রি ফাংশন তৈরি করা। runQuery() কে আরো ব্যবহারযোগ্য করে তুলতে, আমাদের runQuery() থেকে লগ লাইনটি সরাতে হবে createBigQueryPresentation() । আপনার পদ্ধতি এখন এই মত হওয়া উচিত:
/**
 * Runs a BigQuery query, adds data and a chart to a spreadsheet.
 */
function createBigQueryPresentation() {
  var spreadsheet = runQuery();
  Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl()); // MOVED HERE
  createColumnChart(spreadsheet);
}

উপরের পরিবর্তনগুলির সাথে ( PROJECT_ID ব্যতীত), আপনার bq-sheets-slides.js এখন নিচের মত দেখতে হবে৷ এই কোডটি GitHub রেপোর step2 এও পাওয়া যায়।

// File name for data results
var QUERY_NAME = "Most common words in all of Shakespeare's works";
// Replace this value with your Google Cloud Console Project ID
var PROJECT_ID = '';
if (!PROJECT_ID) throw Error('Project ID is required in setup');

/**
 * Runs a BigQuery query; puts results into a sheet. You must turn on
 * the BigQuery advanced service before you can run this code.
 * @see https://developers.google.com/apps-script/advanced/bigquery#run_query
 * @see https://github.com/googleworkspace/apps-script-samples/blob/master/advanced/bigquery.gs
 *
 * @returns {Spreadsheet} Returns a spreadsheet with BigQuery results
 * @see https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet
 */
function runQuery() {
  // Replace sample with your own BigQuery query.
  var request = {
    query:
        'SELECT ' +
            'LOWER(word) AS word, ' +
            'SUM(word_count) AS count ' +
        'FROM [bigquery-public-data:samples.shakespeare] ' +
        'GROUP BY word ' +
        'ORDER BY count ' +
        'DESC LIMIT 10'
  };
  var queryResults = BigQuery.Jobs.query(request, PROJECT_ID);
  var jobId = queryResults.jobReference.jobId;

  // Wait for BigQuery job completion (with exponential backoff).
  var sleepTimeMs = 500;
  while (!queryResults.jobComplete) {
    Utilities.sleep(sleepTimeMs);
    sleepTimeMs *= 2;
    queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId);
  }

  // Get all results from BigQuery.
  var rows = queryResults.rows;
  while (queryResults.pageToken) {
    queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId, {
      pageToken: queryResults.pageToken
    });
    rows = rows.concat(queryResults.rows);
  }

  // Return null if no data returned.
  if (!rows) {
    return Logger.log('No rows returned.');
  }

  // Create the results spreadsheet.
  var spreadsheet = SpreadsheetApp.create(QUERY_NAME);
  var sheet = spreadsheet.getActiveSheet();

  // Add headers to sheet.
  var headers = queryResults.schema.fields.map(function(field) {
    return field.name.toUpperCase();
  });
  sheet.appendRow(headers);

  // Append the results.
  var data = new Array(rows.length);
  for (var i = 0; i < rows.length; i++) {
    var cols = rows[i].f;
    data[i] = new Array(cols.length);
    for (var j = 0; j < cols.length; j++) {
      data[i][j] = cols[j].v;
    }
  }

  // Start storing data in row 2, col 1
  var START_ROW = 2;      // skip header row
  var START_COL = 1;
  sheet.getRange(START_ROW, START_COL, rows.length, headers.length).setValues(data);

  // Return the spreadsheet object for later use.
  return spreadsheet;
}

/**
 * Uses spreadsheet data to create a columnar chart.
 * @param {Spreadsheet} Spreadsheet containing results data
 * @returns {EmbeddedChart} Visualizes the results
 * @see https://developers.google.com/apps-script/reference/spreadsheet/embedded-chart
 */
function createColumnChart(spreadsheet) {
  // Retrieve the populated (first) sheet.
  var sheet = spreadsheet.getSheets()[0];
  // Data range in sheet is from cell A2 to B11.
  var START_CELL = 'A2';  // skip header row
  var END_CELL = 'B11';
  // Place chart on Sheet starting on cell E5.
  var START_ROW = 5;      // row 5
  var START_COL = 5;      // col E
  var OFFSET = 0;

  // Create & place chart on the sheet using above values.
  var chart = sheet.newChart()
     .setChartType(Charts.ChartType.COLUMN)
     .addRange(sheet.getRange(START_CELL + ':' + END_CELL))
     .setPosition(START_ROW, START_COL, OFFSET, OFFSET)
     .build();
  sheet.insertChart(chart);
}

/**
 * Runs a BigQuery query, adds data and a chart to a spreadsheet.
 */
function createBigQueryPresentation() {
  var spreadsheet = runQuery();
  Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl());
  createColumnChart(spreadsheet);
}

স্ক্রিপ্ট সম্পাদকে, আপনার স্ক্রিপ্ট প্রকল্প সংরক্ষণ করুন। তারপর ফাংশন তালিকা থেকে createBigQueryPresentation নির্বাচন করুন এবং Run এ ক্লিক করুন। এটি সম্পূর্ণ হওয়ার পরে, আপনার Google ড্রাইভে আরেকটি স্প্রেডশীট তৈরি করা হয়, কিন্তু এবার একটি চার্ট ডেটার পাশে শীটে অন্তর্ভুক্ত করা হয়েছে:

চার্ট সহ শীট

6. টাস্ক 3: ফলাফলের ডেটা একটি স্লাইড ডেকে রাখুন

কোডল্যাবের চূড়ান্ত অংশে একটি Google স্লাইড উপস্থাপনা তৈরি করা, শিরোনাম স্লাইডে শিরোনাম এবং সাবটাইটেল যোগ করা এবং তারপর ডেটা সেল এবং চার্টের জন্য স্লাইড তৈরি করা জড়িত।

  1. Apps স্ক্রিপ্ট এডিটরে createColumnChart() এর পরে bq-sheets-slides.jscreateSlidePresentation() ফাংশন যোগ করুন। স্লাইড ডেকের সমস্ত কাজ এই ফাংশনে সঞ্চালিত হয়। আসুন একটি স্লাইড ডেক তৈরির সাথে শুরু করি এবং তারপরে ডিফল্ট শিরোনাম স্লাইডে একটি শিরোনাম এবং সাবটাইটেল যুক্ত করি।
/**
 * Create presentation with spreadsheet data and a chart
 * @param {Spreadsheet} Spreadsheet containing results data
 * @param {EmbeddedChart} Sheets chart to embed on a slide
 * @returns {Presentation} Slide deck with the results
  * @see https://developers.google.com/apps-script/reference/slides/presentation
 */
function createSlidePresentation(spreadsheet, chart) {
  // Create the presentation.
  var deck = SlidesApp.create(QUERY_NAME);

  // Populate the title slide.
  var [title, subtitle] = deck.getSlides()[0].getPageElements();
  title.asShape().getText().setText(QUERY_NAME);
  subtitle.asShape().getText().setText('using Google Cloud Console and Google Workspace APIs:\n' +
    'Google Apps Script, BigQuery, Sheets, Slides');
  1. createSlidePresentation() এর পরবর্তী ধাপ হল Google পত্রক থেকে আমাদের নতুন স্লাইড ডেকে সেল ডেটা আমদানি করা। ফাংশনে এই কোড স্নিপেট যোগ করুন:
  // Data range to copy is from cell A1 to B11
  var START_CELL = 'A1';  // include header row
  var END_CELL = 'B11';
  // Add the table slide and insert an empty table on it with
  // the dimensions of the data range; fails if the sheet is empty.
  var tableSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK);
  var sheetValues = spreadsheet.getSheets()[0].getRange(
      START_CELL + ':' + END_CELL).getValues();
  var table = tableSlide.insertTable(sheetValues.length, sheetValues[0].length);

  // Populate the table with spreadsheet data.
  for (var i = 0; i < sheetValues.length; i++) {
    for (var j = 0; j < sheetValues[0].length; j++) {
      table.getCell(i, j).getText().setText(String(sheetValues[i][j]));
    }
  }
  1. createSlidePresentation() এর চূড়ান্ত ধাপ হল আরও একটি স্লাইড যোগ করা, আমাদের স্প্রেডশীট থেকে চার্ট আমদানি করা এবং Presentation বস্তুটি ফেরত দেওয়া। ফাংশনে এই কোড স্নিপেট যোগ করুন:
  // Add a chart slide and insert the chart on it.
  var chartSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK);
  chartSlide.insertSheetsChart(chart);

  // Return the presentation object for later use.
  return deck;
}
  1. এখন আমাদের ফাংশন সম্পূর্ণ হয়েছে, এটির স্বাক্ষরটি আবার দেখুন। createSlidePresentation() স্প্রেডশীট এবং চার্ট অবজেক্ট উভয় প্যারামিটারের প্রয়োজন। Spreadsheet অবজেক্ট ফেরত দেওয়ার জন্য আমরা ইতিমধ্যে runQuery() সমন্বয় করেছি কিন্তু আমাদের createColumnChart() এর জন্য অনুরূপ পরিবর্তন করতে হবে যাতে এটি একটি চার্ট অবজেক্ট ( EmbeddedChart ) ফেরত দেয়। createColumnChart() এ ফিরে যান এবং ফাংশনের শেষে নিম্নলিখিত কোড স্নিপেট যোগ করুন:
  // NEW: Return the chart object for later use.
  return chart;
}
  1. যেহেতু createColumnChart() এখন একটি চার্ট অবজেক্ট রিটার্ন করে, তাই আমাদের চার্টটিকে একটি ভেরিয়েবলে সংরক্ষণ করতে হবে। তারপর আমরা স্প্রেডশীট এবং চার্ট ভেরিয়েবল উভয়ই createSlidePresentation() করতে পাস করি। পাশাপাশি, যেহেতু আমরা নতুন তৈরি স্প্রেডশীটের URL লগ করি, তাই আসুন নতুন স্লাইড উপস্থাপনার URLটিও লগ করি। আপনার createBigQueryPresentation() আপডেট করুন যাতে এটি এইরকম দেখায়:
/**
 * Runs a BigQuery query, adds data and a chart to a spreadsheet,
 * and adds the data and chart to a new slide presentation.
 */
function createBigQueryPresentation() {
  var spreadsheet = runQuery();
  Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl());
  var chart = createColumnChart(spreadsheet); // UPDATED
  var deck = createSlidePresentation(spreadsheet, chart); // NEW
  Logger.log('Results slide deck created: %s', deck.getUrl()); // NEW
}
  1. আবার createBigQueryPresentation() সংরক্ষণ করুন এবং চালান। যদিও এটি কার্যকর করার আগে, Google স্লাইড উপস্থাপনাগুলি দেখতে এবং পরিচালনা করার জন্য আপনার অ্যাপটির আপনার ব্যবহারকারীর কাছ থেকে আরও একটি সেট অনুমতি প্রয়োজন৷ একবার আপনি এই অনুমতিগুলি পর্যালোচনা এবং অনুমতি দিলে, এটি আগের মতোই চলবে৷
  2. এখন, তৈরি করা স্প্রেডশীট ছাড়াও, আপনাকে 3টি স্লাইড (শিরোনাম, ডেটা টেবিল, ডেটা চার্ট) সহ একটি নতুন স্লাইড উপস্থাপনাও পেতে হবে, যা নীচে দেখানো হয়েছে:

f6896f22cc3cd50d.png

59960803e62f7c69.png

5549f0ea81514360.png

7. উপসংহার

অভিনন্দন, আপনি একটি অ্যাপ্লিকেশন তৈরি করেছেন যা Google ক্লাউডের উভয় দিক ব্যবহার করে। এটি একটি Google BigQuery অনুরোধ সম্পাদন করে যা তার সর্বজনীন ডেটাসেটগুলির একটিকে জিজ্ঞাসা করে, ফলাফলগুলি সংরক্ষণ করার জন্য একটি Google পত্রক স্প্রেডশীট তৈরি করে, ডেটার উপর ভিত্তি করে একটি চার্ট যোগ করে এবং অবশেষে স্প্রেডশীট থেকে ডেটা এবং চার্ট ফলাফল সমন্বিত একটি Google স্লাইড উপস্থাপনা তৈরি করে৷

এই পদক্ষেপগুলি আপনি প্রযুক্তিগতভাবে করেছেন। বিস্তৃতভাবে বলতে গেলে, আপনি বড় ডেটা বিশ্লেষণ থেকে শুরু করে এমন একটি ফলাফলে গিয়েছিলেন যা আপনি স্টেকহোল্ডারদের কাছে উপস্থাপন করতে পারেন—সবই কোড ব্যবহার করে স্বয়ংক্রিয়। আমরা আশা করি এই নমুনা আপনাকে আপনার নিজের প্রকল্পের জন্য এটি কাস্টমাইজ করতে অনুপ্রাণিত করবে। এই কোডল্যাবের উপসংহারে, আপনি কীভাবে এই নমুনা অ্যাপটিকে আরও উন্নত করতে পারেন সে সম্পর্কে আমরা কিছু পরামর্শ দেব।

চূড়ান্ত টাস্ক থেকে পরিবর্তনের সাথে ( PROJECT_ID ছাড়া), আপনার bq-sheets-slides.js এখন নিচের মত দেখতে হবে:

/**
 * Copyright 2018 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// File name for data results
var QUERY_NAME = "Most common words in all of Shakespeare's works";
// Replace this value with your Google Cloud Console Project ID
var PROJECT_ID = '';
if (!PROJECT_ID) throw Error('Project ID is required in setup');

/**
 * Runs a BigQuery query; puts results into a spreadsheet. You must turn on
 * the BigQuery advanced service before you can run this code.
 * @see https://developers.google.com/apps-script/advanced/bigquery#run_query
 * @see https://github.com/googleworkspace/apps-script-samples/blob/master/advanced/bigquery.gs
 *
 * @returns {Spreadsheet} Returns a spreadsheet with BigQuery results
 * @see https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet
 */
function runQuery() {
  // Replace sample with your own BigQuery query.
  var request = {
    query:
        'SELECT ' +
            'LOWER(word) AS word, ' +
            'SUM(word_count) AS count ' +
        'FROM [bigquery-public-data:samples.shakespeare] ' +
        'GROUP BY word ' +
        'ORDER BY count ' +
        'DESC LIMIT 10'
  };
  var queryResults = BigQuery.Jobs.query(request, PROJECT_ID);
  var jobId = queryResults.jobReference.jobId;

  // Wait for BigQuery job completion (with exponential backoff).
  var sleepTimeMs = 500;
  while (!queryResults.jobComplete) {
    Utilities.sleep(sleepTimeMs);
    sleepTimeMs *= 2;
    queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId);
  }

  // Get all results from BigQuery.
  var rows = queryResults.rows;
  while (queryResults.pageToken) {
    queryResults = BigQuery.Jobs.getQueryResults(PROJECT_ID, jobId, {
      pageToken: queryResults.pageToken
    });
    rows = rows.concat(queryResults.rows);
  }

  // Return null if no data returned.
  if (!rows) {
    return Logger.log('No rows returned.');
  }

  // Create the results spreadsheet.
  var spreadsheet = SpreadsheetApp.create(QUERY_NAME);
  var sheet = spreadsheet.getActiveSheet();

  // Add headers to sheet.
  var headers = queryResults.schema.fields.map(function(field) {
    return field.name.toUpperCase();
  });
  sheet.appendRow(headers);

  // Append the results.
  var data = new Array(rows.length);
  for (var i = 0; i < rows.length; i++) {
    var cols = rows[i].f;
    data[i] = new Array(cols.length);
    for (var j = 0; j < cols.length; j++) {
      data[i][j] = cols[j].v;
    }
  }

  // Start storing data in row 2, col 1
  var START_ROW = 2;      // skip header row
  var START_COL = 1;
  sheet.getRange(START_ROW, START_COL, rows.length, headers.length).setValues(data);

  // Return the spreadsheet object for later use.
  return spreadsheet;
}

/**
 * Uses spreadsheet data to create a column chart.
 * @param {Spreadsheet} Spreadsheet containing results data
 * @returns {EmbeddedChart} Visualizes the results
 * @see https://developers.google.com/apps-script/reference/spreadsheet/embedded-chart
 */
function createColumnChart(spreadsheet) {
  // Retrieve the populated (first) sheet.
  var sheet = spreadsheet.getSheets()[0];
  // Data range in sheet is from cell A2 to B11.
  var START_CELL = 'A2';  // skip header row
  var END_CELL = 'B11';
  // Place chart on sheet starting on cell E5.
  var START_ROW = 5;      // row 5
  var START_COL = 5;      // col E
  var OFFSET = 0;

  // Create & place chart on the sheet using above values.
  var chart = sheet.newChart()
     .setChartType(Charts.ChartType.COLUMN)
     .addRange(sheet.getRange(START_CELL + ':' + END_CELL))
     .setPosition(START_ROW, START_COL, OFFSET, OFFSET)
     .build();
  sheet.insertChart(chart);
  
  // Return the chart object for later use.
  return chart;
}

/**
 * Create presentation with spreadsheet data and a chart
 * @param {Spreadsheet} Spreadsheet containing results data
 * @param {EmbeddedChart} Sheets chart to embed on a slide
 * @returns {Presentation} Slide deck with the results
 * @see https://developers.google.com/apps-script/reference/slides/presentation
 */
function createSlidePresentation(spreadsheet, chart) {
  // Create the presentation.
  var deck = SlidesApp.create(QUERY_NAME);

  // Populate the title slide.
  var [title, subtitle] = deck.getSlides()[0].getPageElements();
  title.asShape().getText().setText(QUERY_NAME);
  subtitle.asShape().getText().setText('using Google Cloud Console and Google Workspace APIs:\n' +
    'Google Apps Script, BigQuery, Sheets, Slides');

  // Data range to copy is from cell A1 to B11
  var START_CELL = 'A1';  // include header row
  var END_CELL = 'B11';
  // Add the table slide and insert an empty table on it with
  // the dimensions of the data range; fails if the sheet is empty.
  var tableSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK);
  var sheetValues = spreadsheet.getSheets()[0].getRange(
      START_CELL + ':' + END_CELL).getValues();
  var table = tableSlide.insertTable(sheetValues.length, sheetValues[0].length);

  // Populate the table with spreadsheet data.
  for (var i = 0; i < sheetValues.length; i++) {
    for (var j = 0; j < sheetValues[0].length; j++) {
      table.getCell(i, j).getText().setText(String(sheetValues[i][j]));
    }
  }

  // Add a chart slide and insert the chart on it.
  var chartSlide = deck.appendSlide(SlidesApp.PredefinedLayout.BLANK);
  chartSlide.insertSheetsChart(chart);

  // Return the presentation object for later use.
  return deck;
}

/**
 * Runs a BigQuery query, adds data and a chart to a spreadsheet,
 * and adds the data and chart to a new slide presentation.
 */
function createBigQueryPresentation() {
  var spreadsheet = runQuery();
  Logger.log('Results spreadsheet created: %s', spreadsheet.getUrl());
  var chart = createColumnChart(spreadsheet);
  var deck = createSlidePresentation(spreadsheet, chart);
  Logger.log('Results slide deck created: %s', deck.getUrl());
}

এই কোড নমুনাটি গিটহাব রেপোর final ফোল্ডারেও পাওয়া যাবে।

8. অতিরিক্ত সম্পদ

এই কোডল্যাবে কভার করা উপাদানের গভীরে খনন করতে এবং প্রোগ্রামগতভাবে Google বিকাশকারী সরঞ্জামগুলি অ্যাক্সেস করার অন্যান্য উপায়গুলি অন্বেষণ করতে আপনাকে সাহায্য করার জন্য নীচে আরও সংস্থান রয়েছে৷

এই অ্যাপ্লিকেশনের জন্য সম্পদ

ডকুমেন্টেশন

ভিডিও

খবর এবং আপডেট

অন্যান্য কোডল্যাব

পরিচিতিমূলক

মধ্যবর্তী

9. পরবর্তী ধাপ: কোড চ্যালেঞ্জ

আমরা এই কোডল্যাবে যে নমুনা তৈরি করেছি তা আপনি উন্নত বা বৃদ্ধি করতে বিভিন্ন উপায়ে নীচে তালিকাভুক্ত করা হয়েছে৷ এই তালিকাটি সম্পূর্ণ নয় তবে আপনি কীভাবে পরবর্তী পদক্ষেপ নিতে পারেন সে সম্পর্কে এটি কিছু অনুপ্রেরণামূলক ধারণা প্রদান করে।

  • অ্যাপ্লিকেশন — জাভাস্ক্রিপ্ট ব্যবহার করে বা অ্যাপস স্ক্রিপ্ট দ্বারা আরোপিত বিধিনিষেধের মধ্যে সীমাবদ্ধ থাকতে চান না? এই অ্যাপ্লিকেশনটিকে আপনার প্রিয় প্রোগ্রামিং ভাষায় পোর্ট করুন যা Google BigQuery, Sheets এবং Slides-এর জন্য REST API ব্যবহার করে।
  • BigQuery — আপনার আগ্রহের শেক্সপিয়ার ডেটাসেটের জন্য একটি ভিন্ন ক্যোয়ারী নিয়ে পরীক্ষা করুন। অন্য একটি নমুনা ক্যোয়ারী মূল Apps Script BigQuery নমুনা অ্যাপে পাওয়া যাবে।
  • BigQuery —BigQuery-এর অন্যান্য পাবলিক ডেটাসেটের কিছু নিয়ে পরীক্ষা করুন যা আপনার কাছে আরও অর্থপূর্ণ।
  • BigQuery —আগে, আমরা শেকসপিয়রের কাজ বা অন্যান্য পাবলিক ডেটা টেবিলের সাহায্যে আপনি তৈরি করতে পারেন এমন অন্যান্য প্রশ্নের উল্লেখ করেছি। সেগুলি এই ওয়েব পৃষ্ঠা এবং এই GitHub রেপোতে পাওয়া যাবে।
  • পত্রকচার্ট গ্যালারিতে অন্যান্য চার্ট প্রকারের সাথে পরীক্ষা করুন।
  • পত্রক এবং BigQuery — আপনার নিজের বড় স্প্রেডশীট ডেটাসেট ব্যবহার করুন। 2016 সালে, BigQuery টিম ডেভেলপারদের ডেটা উৎস হিসাবে একটি পত্রক ব্যবহার করার অনুমতি দেওয়ার জন্য একটি বৈশিষ্ট্য চালু করেছে। আরও তথ্যের জন্য, যান ( Google BigQuery Google ড্রাইভের সাথে একীভূত হয়
  • স্লাইডস —জেনারেট করা প্রেজেন্টেশনে অন্যান্য স্লাইড যোগ করুন, যেমন ছবি বা অন্যান্য সম্পদ আপনার বড় ডেটা বিশ্লেষণের সাথে যুক্ত। এখানে স্লাইড বিল্ট-ইন পরিষেবার জন্য রেফারেন্স ডকুমেন্টেশন আছে।
  • Google Workspace —অন্যান্য Google Workspace বা অ্যাপ স্ক্রিপ্ট থেকে Google বিল্ট-ইন পরিষেবা ব্যবহার করুন। যেমন, Gmail, Calendar, Docs, Drive, Maps, Analytics, YouTube, ইত্যাদির পাশাপাশি অন্যান্য উন্নত পরিষেবা। আরও তথ্যের জন্য, বিল্ট-ইন এবং উন্নত উভয় পরিষেবার জন্য রেফারেন্স ওভারভিউতে যান।