১. ভূমিকা
কোটি কোটি ব্যবসা প্রতিষ্ঠান ও ব্যক্তি যোগাযোগ এবং ডেটা প্রক্রিয়াকরণের জন্য জিমেইল এবং অন্যান্য জি স্যুট পরিষেবা ব্যবহার করে। এই পরিষেবাগুলিতে প্রোগ্রাম্যাটিকভাবে তথ্য অ্যাক্সেস করতে সাহায্য করার জন্য গুগল জি স্যুট এপিআই (API) প্রদান করে, এবং আপনি এই এপিআইগুলো ব্যবহার করে সহজেই আপনার দৈনন্দিন কাজের ধারাকে স্বয়ংক্রিয় করতে পারেন। এই ল্যাবে, আপনি একটি শক্তিশালী জিমেইল এক্সটেনশন তৈরি করবেন যা ইনকামিং মেসেজের ইমেলগুলোকে স্বয়ংক্রিয়ভাবে ক্যাটাগরিভুক্ত করবে এবং সেই ক্যাটাগরিগুলো একটি গুগল শিটে সংরক্ষণ করবে। এই এক্সটেনশনটি জি স্যুটের RESTful এপিআই, গুগল ক্লাউড ফাংশন এবং অন্যান্য গুগল ক্লাউড প্ল্যাটফর্ম পরিষেবা ব্যবহার করবে।
আপনি যা তৈরি করবেন
এই ল্যাবে, আপনি G Suite API এবং অন্যান্য Google Cloud Platform পরিষেবার সাথে সংযুক্ত কয়েকটি ক্লাউড ফাংশন তৈরি ও স্থাপন করবেন। এই ফাংশনগুলো যা করবে:
- আপনার Gmail এবং Google Sheets ডেটাতে সুরক্ষিত অ্যাক্সেসের অনুমোদন দিন
- যেকোনো ইনকামিং মেইলের সাথে সংযুক্ত ছবিগুলো বের করুন।
- ক্লাউড ভিশন এপিআই ব্যবহার করে সেই ছবিগুলোকে শ্রেণীবদ্ধ করুন।
- ওই ক্যাটাগরিগুলো, প্রেরকের ঠিকানা এবং অ্যাটাচমেন্টের নাম একটি গুগল শিটে লিখুন।
আপনি যা শিখবেন
- জি স্যুট রেস্টফুল এপিআই-এর মৌলিক বিষয়াবলী
- গুগল ক্লাউড ফাংশন এবং অন্যান্য গুগল ক্লাউড প্ল্যাটফর্ম পরিষেবাগুলির মৌলিক বিষয়াবলী
- গুগল ক্লাউড ফাংশন ব্যবহার করে প্রোগ্রাম্যাটিকভাবে জিমেইল অ্যাক্সেস করার উপায়
আপনার যা যা প্রয়োজন হবে
- জিমেইল এবং গুগল শিটস ব্যবহারের সুবিধাসহ একটি গুগল অ্যাকাউন্ট। যদি আপনার এমন কোনো অ্যাকাউন্ট না থাকে, তবে এখান থেকে একটি তৈরি করে নিন ।
- জাভাস্ক্রিপ্ট/নোড.জেএস সম্পর্কে প্রাথমিক জ্ঞান।
২. প্রথমত
এপিআইগুলি সক্রিয় করুন
এই ল্যাবে আপনি নিম্নলিখিত গুগল পণ্য/পরিষেবাগুলো ব্যবহার করবেন:
- গুগল ক্লাউড ফাংশন
- গুগল ক্লাউড পাব/সাব
- গুগল ক্লাউড ভিশন এপিআই
- গুগল ক্লাউড ডেটাস্টোর
- জিমেইল এপিআই
- গুগল শীটস এপিআই
গুগল ক্লাউড ফাংশন
গুগল ক্লাউড ফাংশনস হলো গুগলের সার্ভারবিহীন ফাংশনস-অ্যাজ-এ-সার্ভিস প্ল্যাটফর্ম, যা আপনাকে সহজ ও সম্প্রসারণযোগ্য উপায়ে কোডের স্বতন্ত্র অংশ ('ফাংশন') চালানোর সুযোগ দেয়।
Google Cloud Functions চালু করতে, আপনার স্ক্রিনের উপরের বাম দিকে থাকা হ্যামবার্গার মেনুতে ক্লিক করে বাম নেভিগেশন সাইডবারটি খুলুন:

নেভিগেশন মেনুতে ক্লাউড ফাংশনস (Cloud Functions) খুঁজুন এবং এটিতে ক্লিক করুন। আপনার প্রোজেক্টে গুগল ক্লাউড ফাংশনস (Google Cloud Functions) সক্রিয় করতে এনাবল এপিআই (Enable API) -তে ক্লিক করুন।
গুগল ক্লাউড পাব/সাব
গুগল ক্লাউড পাব/সাব হলো ডেটা স্ট্রিমিং এবং ইভেন্ট ডেলিভারির জন্য একটি সহজ ও পরিবর্ধনযোগ্য ভিত্তি। এই ল্যাবে এটি জিমেইল এবং গুগল ক্লাউড ফাংশনস-এর মধ্যে সংযোগকারী হিসেবে কাজ করে।
Google Cloud Pub/Sub সক্রিয় করতে, বাম দিকের নেভিগেশন সাইডবারটি খুলুন, Pub/Sub খুঁজুন এবং এটিতে ক্লিক করুন। আপনার প্রোজেক্টে Google Cloud Pub/Sub সক্রিয় করতে Enable API-তে ক্লিক করুন।
গুগল ক্লাউড ডেটাস্টোর
গুগল ক্লাউড ডেটাস্টোর হলো একটি সার্ভারবিহীন ডেটাবেস যা সম্প্রসারণযোগ্য এবং বিতরণযোগ্য।
Google Cloud Datastore চালু করতে, বাম দিকের নেভিগেশন সাইডবারে Datastore খুঁজে বের করে তাতে ক্লিক করুন। নতুন পেজটিতে Select Datastore Mode-এ ক্লিক করুন।

এই ল্যাবের জন্য আপনি যেকোনো ডেটাবেস লোকেশন ব্যবহার করতে পারেন। গুগল ক্লাউড ডেটাস্টোর সক্রিয় করতে 'ক্রিয়েট ডেটাবেস'-এ ক্লিক করুন; এটি সম্পন্ন হতে কয়েক মিনিট সময় লাগতে পারে।
গুগল ক্লাউড ভিশন
গুগল ক্লাউড ভিশন এপিআই হলো একটি শক্তিশালী মেশিন লার্নিং পরিষেবা, যা আপনার ছবি থেকে তথ্য আহরণের জন্য পূর্ব-প্রশিক্ষিত মডেল ব্যবহার করে।
গুগল ক্লাউড ভিশন এপিআই কীভাবে সক্রিয় করতে হয়, সে সম্পর্কে তথ্যের জন্য নিচের নির্দেশাবলী দেখুন।
জিমেইল এপিআই, গুগল শিটস এপিআই এবং গুগল ক্লাউড ভিশন এপিআই সক্রিয় করা
আবারও, বাম দিকের নেভিগেশন সাইডবারটি খুলুন এবং APIs & Services খুঁজুন। Library-তে ক্লিক করুন। Search for APIs & Services ফিল্ডে Gmail টাইপ করুন। সার্চ রেজাল্ট থেকে Gmail API সিলেক্ট করুন এবং Enable-এ ক্লিক করুন।
এপিআই লাইব্রেরি পেজে ফিরে যান। গুগল শিটস এপিআই (Google Sheets API) অনুসন্ধান করুন এবং এটি সক্রিয় করুন।
প্রক্রিয়াটি পুনরাবৃত্তি করুন। ক্লাউড ভিশন এপিআই (Cloud Vision API) অনুসন্ধান করুন এবং এটি সক্রিয় করুন।
গুগল ক্লাউড শেল খুলুন
এই ল্যাবে, আপনি বেশিরভাগ কাজ সম্পাদনের জন্য গুগল ক্লাউড শেল ব্যবহার করবেন। ক্লাউড শেল আপনাকে সরাসরি আপনার ব্রাউজার থেকে গুগল ক্লাউড প্ল্যাটফর্ম রিসোর্সগুলিতে কমান্ড-লাইন অ্যাক্সেস দেয়, যার ফলে আপনি কোনো লোকাল মেশিন ব্যবহার না করেই সেগুলি পরিচালনা করতে পারেন।
Google Cloud Shell খোলার জন্য, উপরের নীল হরাইজন্টাল বারে থাকা Activate Cloud Shell বাটনটিতে ক্লিক করুন:

স্ক্রিনের নীচে একটি নতুন প্যানেল প্রদর্শিত হবে:

ক্লাউড শেল কোড এডিটর চালু করতে লঞ্চ কোড এডিটর বাটনে ক্লিক করুন:

ক্লাউড শেল কোড এডিটর একটি নতুন উইন্ডোতে খুলবে।
কোডটি ডাউনলোড করুন
প্রজেক্টটি ক্লোন করতে আপনার ক্লাউড শেলে নিচের কমান্ডটি চালান:
git clone https://github.com/googlecodelabs/gcf-gmail-codelab.git cd gcf-gmail-codelab
আপনি ক্লাউড শেল কোড এডিটরে gcf-gmail-codelab নামের একটি নতুন ফোল্ডার দেখতে পাবেন।
৩. স্থাপত্যের সংক্ষিপ্ত বিবরণ
এই ল্যাবের কার্যপ্রবাহ নিচে দেওয়া হলো:

- ব্যবহারকারী জিমেইল পুশ নোটিফিকেশন সেট আপ করেছেন: যখনই ইনবক্সে কোনো নতুন বার্তা আসবে, জিমেইল ক্লাউড পাব/সাব-কে একটি নোটিফিকেশন পাঠাবে।
- ক্লাউড পাব/সাব গুগল ক্লাউড ফাংশনস-এ নতুন বার্তার বিজ্ঞপ্তি পৌঁছে দেয়।
- নতুন বার্তার বিজ্ঞপ্তি আসার পর, একটি ক্লাউড ফাংশনস ইনস্ট্যান্স জিমেইলের সাথে সংযোগ স্থাপন করে এবং নতুন বার্তাটি গ্রহণ করে।
- যদি মেইলে অ্যাটাচমেন্ট হিসেবে কোনো ছবি থাকে, তাহলে ক্লাউড ফাংশনস ইনস্ট্যান্সটি অ্যাটাচমেন্টটি বিশ্লেষণ করার জন্য ক্লাউড ভিশন এপিআই-কে কল করে।
- ক্লাউড ফাংশনস ইনস্ট্যান্সটি আপনার পছন্দের একটি গুগল শিট আপডেট করে, যেখানে উল্লেখ করা থাকে কে বার্তাটি পাঠাবে এবং অ্যাটাচমেন্টটি কোথা থেকে ডাউনলোড করতে হবে।
৪. জিমেইলে প্রবেশের অনুমতি দিন।
আপনার ইমেলগুলি স্বয়ংক্রিয়ভাবে পড়ার জন্য একটি ক্লাউড ফাংশন সেট আপ করার আগে, আপনাকে অবশ্যই জিমেইলে এর অ্যাক্সেস অনুমোদন করতে হবে। এর জন্য আপনাকে গুগলের সাথে একটি OAuth ক্লায়েন্ট নিবন্ধন করতে হবে এবং একটি সংশ্লিষ্ট ক্লায়েন্ট আইডি তৈরি করতে হবে।
একটি OAuth ক্লায়েন্ট নিবন্ধন করুন
Google Cloud Console-এর বাম দিকের নেভিগেশন মেনুতে, APIs & Services খুঁজুন। OAuth consent screen-এ ক্লিক করুন।

অ্যাপ্লিকেশন নামের ফিল্ডে একটি নাম টাইপ করুন, যেমন GCF + Gmail Codelab । অন্যান্য সেটিংস অপরিবর্তিত রেখে, পেজটি নিচে স্ক্রল করুন এবং সেভ-এ ক্লিক করুন।
একটি সংশ্লিষ্ট ক্লায়েন্ট আইডি তৈরি করুন
ক্রেডেনশিয়ালস ট্যাবে যান। ক্রিয়েট ক্রেডেনশিয়ালস-এ ক্লিক করুন এবং OAuth ক্লায়েন্ট আইডি বেছে নিন। ওয়েব অ্যাপ্লিকেশন টাইপ নির্বাচন করুন, এটির একটি নাম দিন (আপনি এখানে আবার GCF + Gmail Codelab ব্যবহার করতে পারেন), এবং ক্রিয়েট-এ ক্লিক করুন। আপাতত রেস্ট্রিকশনস ফিল্ডগুলো খালি রাখুন।
পপ-আপ উইন্ডোতে প্রাপ্ত ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট লিখে রাখুন। এই মানগুলো পুনরায় দেখার জন্য আপনি পৃষ্ঠাটিতে আপনার ক্লায়েন্টের নামে ক্লিক করতে পারেন:

অনুমোদন প্রক্রিয়াটি সম্পাদন করুন
নমুনা কোডে, auth/index.js ফাইলে auth_init এবং auth_callback নামে দুটি ক্লাউড ফাংশন নির্দিষ্ট করা আছে, যেগুলো আপনার সদ্য তৈরি করা ক্লায়েন্ট আইডি এবং ক্লায়েন্ট সিক্রেট ব্যবহার করে অথরাইজেশন প্রক্রিয়াটি সম্পন্ন করার জন্য একসাথে কাজ করে।
কোডটি পরিদর্শন করতে, ক্লাউড শেল কোড এডিটরে auth/index.js খুলুন।
অনুমোদন প্রক্রিয়াটি দুই ধরনের টোকেন প্রদান করে: অ্যাক্সেস টোকেন এবং রিফ্রেশ টোকেন ।
- অ্যাক্সেস টোকেন হলো স্বল্পস্থায়ী পরিচয়পত্র, যা এর অধিকারী যে কাউকে আপনার ডেটাতে সীমিত অ্যাক্সেস প্রদান করে;
auth_callbackএগুলো ক্লাউড ডেটাস্টোরে সংরক্ষণ করে। - রিফ্রেশ টোকেন নতুন অ্যাক্সেস টোকেন পেতে ব্যবহৃত হয় এবং এগুলোর মেয়াদ উল্লেখযোগ্যভাবে বেশি।
সাধারণত, এগুলো এনক্রিপ্ট করা থাকে এবং/অথবা অ্যাক্সেস টোকেন থেকে আলাদাভাবে সংরক্ষণ করা হয়।
ক্লাউড শেল কোড এডিটরে auth/env_vars.yaml সম্পাদনা করুন। YOUR-GOOGLE-CLIENT-ID এবং YOUR-GOOGLE-CLIENT-SECRET জায়গায় আপনার নিজের মান বসান। আরও তথ্যের জন্য পূর্ববর্তী ধাপটি দেখুন। আপাতত YOUR-GOOGLE-CLIENT-CALLBACK-URL এবং YOUR-PUBSUB-TOPIC এর মান অপরিবর্তিত রাখুন।

auth/env_vars.yaml সম্পাদনা করার পর, ক্লাউড ফাংশনগুলো ডিপ্লয় করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
cd ~ cd gcf-gmail-codelab/auth # Deploy Cloud Function auth_init gcloud functions deploy auth_init --runtime=nodejs8 --trigger-http --env-vars-file=env_vars.yaml # Deploy Cloud Function auth_callback gcloud functions deploy auth_callback --runtime=nodejs8 --trigger-http --env-vars-file=env_vars.yaml
ক্লাউড ফাংশনগুলো স্থাপন করতে কয়েক মিনিট সময় লাগতে পারে। অনুরোধ করা হলে, বিটা কমান্ডগুলো ইনস্টল করার জন্য ক্লাউড এসডিকে-কে অনুমতি দিন।
এরপর, গুগল ক্লাউড কনসোলে যান এবং বাম দিকের নেভিগেশন মেনু থেকে ক্লাউড ফাংশনস -এ ক্লিক করুন। ক্লাউড ফাংশনস-এর তালিকা থেকে auth_callback ক্লিক করুন এবং ট্রিগার ট্যাবে যান।


পৃষ্ঠা থেকে URL-টি কপি করুন। ক্লাউড ফাংশন পৃষ্ঠায় ফিরে যান, ক্লাউড ফাংশনের তালিকা থেকে auth_init ক্লিক করুন। জেনারেল ট্যাবে, এডিট- এ ক্লিক করুন। এনভায়রনমেন্টাল ভ্যারিয়েবলস, নেটওয়ার্কিং, টাইমআউটস অ্যান্ড মোর- এ ক্লিক করুন এবং GOOGLE_CALLBACK_URL এর মানটি আপনার এইমাত্র কপি করা URL-টি দিয়ে প্রতিস্থাপন করুন।

পরিবর্তনগুলো প্রয়োগ করতে Deploy-এ ক্লিক করুন। প্রক্রিয়াটি পুনরাবৃত্তি করুন এবং auth_callback ও আপডেট করুন।
সবশেষে, বাম দিকের নেভিগেশন মেনু খুলুন এবং APIs & Services > Domain verification-এ ক্লিক করুন। একটি অনুমোদিত ডোমেইন যোগ করতে, Add domain-এ ক্লিক করুন। উদাহরণস্বরূপ, আপনি আগে যে URL-টি কপি করেছিলেন তা যদি দেখতে এইরকম হয়
https://us-central1-my-project.cloudfunctions.net/auth_callback
আপনাকে নিম্নলিখিতটি একটি অনুমোদিত ডোমেইন হিসেবে যুক্ত করতে হবে:
us-central1-my-project.cloudfunctions.net
নিশ্চিত করতে 'ডোমেইন যোগ করুন ' চাপুন।

ক্রেডেনশিয়ালস পেজে ফিরে যান। আপনার OAuth ক্লায়েন্টের নামে ক্লিক করুন এবং আপনার কপি করা URL-টি একটি অথরাইজড রিডাইরেক্ট URI হিসেবে যোগ করুন। নিশ্চিত করতে এন্টার চাপুন।
URL থেকে /auth_callback অংশটি সরিয়ে দিন এবং বাকি অংশকে একটি অনুমোদিত জাভাস্ক্রিপ্ট অরিজিন হিসেবে যোগ করুন। উদাহরণস্বরূপ, যদি আপনার URL দেখতে এইরকম হয়
https://us-central1-my-project.cloudfunctions.net/auth_callback
আপনাকে উৎস হিসেবে নিম্নলিখিতটি যোগ করতে হবে:
https://us-central1-my-project.cloudfunctions.net/

নিশ্চিত করতে এন্টার চাপুন এবং পরিবর্তনগুলো প্রয়োগ করতে সেভ-এ ক্লিক করুন।
৫. জিমেইল পুশ নোটিফিকেশন সেট আপ করুন
অনুমোদন প্রক্রিয়া সফল হলে, auth_callback স্বয়ংক্রিয়ভাবে পুশ নোটিফিকেশন সেট আপ করার জন্য Gmail API-কে কল করবে।
জিমেইল পুশ নোটিফিকেশন পেতে হলে আপনাকে একটি পাব/সাব টপিক তৈরি করতে হবে। টপিকটির যেকোনো সাবস্ক্রাইবার জিমেইল থেকে মেসেজ আসা মাত্রই স্বয়ংক্রিয়ভাবে তার নোটিফিকেশন পেয়ে যাবেন।
একটি পাব/সাব টপিক তৈরি করতে, গুগল ক্লাউড কনসোলে যান এবং বাম দিকের নেভিগেশন মেনু থেকে পাব/সাব > টপিকস -এ ক্লিক করুন। ক্রিয়েট টপিক-এ ক্লিক করুন। টপিকটির নাম টাইপ করুন, যেমন gmail-watch , এবং ক্রিয়েট-এ ক্লিক করুন। এছাড়াও, আপনার পাব/সাব টপিকে মেসেজ পাঠানোর জন্য আপনাকে অবশ্যই জিমেইলকে অনুমতি দিতে হবে: আপনি এইমাত্র তৈরি করা টপিকটির কনটেক্সট মেনুতে (তিনটি উল্লম্ব ডট) ক্লিক করুন এবং পারমিশনস বেছে নিন; অ্যাড মেম্বারস-এ ক্লিক করুন, নতুন সদস্য হিসেবে gmail-api-push@system.gserviceaccount.com নির্দিষ্ট করুন এবং তাকে পাব/সাব > পাব/সাব পাবলিশার- এর ভূমিকা দিন; সবশেষে, পরিবর্তনগুলো প্রয়োগ করতে সেভ-এ ক্লিক করুন।
কোন পাব/সাব টপিক ব্যবহার করতে হবে তা নির্দিষ্ট করার জন্য ক্লাউড ফাংশন auth_callback আপডেট করুন। বাম দিকের নেভিগেশন মেনুতে ক্লাউড ফাংশন- এ ক্লিক করুন এবং ক্লাউড ফাংশন-এর তালিকা থেকে auth_callback নির্বাচন করুন। জেনারেল ট্যাবে, এডিট- এ ক্লিক করুন। মোর-এ ক্লিক করুন এবং PUBSUB_TOPIC এর মানটি আপনার তৈরি করা পাব/সাব টপিকের নাম দিয়ে প্রতিস্থাপন করুন। পরিবর্তনগুলো প্রয়োগ করতে সেভ-এ ক্লিক করুন।
এখন আপনি জিমেইল পুশ নোটিফিকেশন অনুমোদন ও সেট আপ করার জন্য প্রস্তুত। নতুন পরিবর্তনগুলো চূড়ান্ত হওয়া পর্যন্ত অপেক্ষা করুন, তারপর ক্লাউড ফাংশন পেজে ফিরে যান, ক্লাউড ফাংশনের তালিকা থেকে auth_init নির্বাচন করুন এবং ট্রিগার ট্যাবে যান। ইউআরএল-টিতে ক্লিক করুন, এবং আপনাকে ‘সাইন-ইন উইথ গুগল’ পেজে রিডাইরেক্ট করা হবে।

আপনার নিজের একটি জিমেইল অ্যাকাউন্ট দিয়ে সাইন ইন করুন। অ্যাকাউন্টের ইনবক্সে কোনো নতুন বার্তা এলে একটি পুশ নোটিফিকেশন পাঠানো হবে। সাইন ইন করার পর আপনি নিচের পেজটি দেখতে পাবেন:

অ্যাক্সেস অনুমোদন করতে Allow- এ ক্লিক করুন। auth_callback অনুমোদন প্রক্রিয়াটি সম্পন্ন করবে, অ্যাক্সেস টোকেনগুলো সংরক্ষণ করবে এবং আপনার জন্য Gmail পুশ নোটিফিকেশন সেট আপ করবে। এই প্রক্রিয়াটি সম্পন্ন হলে আপনি আপনার ব্রাউজারে Successfully set up Gmail push notifications বার্তাটি দেখতে পাবেন।
এই কোডল্যাবটি আপনার জন্য অথরাইজেশন ওয়ার্কফ্লো স্বয়ংক্রিয় করতে @google-cloud/express-oauth2-handlers প্যাকেজটি ব্যবহার করে। আরও তথ্যের জন্য, গিটহাবে এর রিপোজিটরি দেখুন।
৬. আগত বার্তা প্রক্রিয়াকরণ করুন
যেমনটি আমরা আগে উল্লেখ করেছি, আপনার তৈরি করা পাব/সাব টপিকের যেকোনো সাবস্ক্রাইবার আপনার ইনবক্সে নতুন মেসেজ এলে নোটিফিকেশন পাবেন। pubsub/index.js watchGmailMessages নামে একটি ক্লাউড ফাংশন নির্দিষ্ট করা আছে, যা টপিকের সাবস্ক্রাইবার হিসেবে ডেপ্লয় করা হলে নতুন মেসেজগুলো পড়বে, সংযুক্ত ছবিগুলোকে ক্যাটাগরিভুক্ত করবে এবং সেই ক্যাটাগরিগুলো একটি গুগল শিটে এক্সপোর্ট করবে।
কোডটি পরিদর্শন করতে, ক্লাউড শেল কোড এডিটরে pubsub/index.js খুলুন।
বার্তা পুনরুদ্ধার করা হচ্ছে
একটি জিমেইল পুশ নোটিফিকেশনে সংশ্লিষ্ট ইমেল ঠিকানা এবং একটি হিস্ট্রি আইডি অন্তর্ভুক্ত থাকে। সরলতার জন্য, এই কোডল্যাবে পুশ নোটিফিকেশন এলে আপনি সরাসরি জিমেইল এপিআই-কে সর্বশেষ মেসেজটির জন্য অনুরোধ করবেন; আরও ভালো ফলাফলের জন্য, মেসেজ খোঁজার জন্য হিস্ট্রি আইডি ব্যবহার করুন ।
// Look up the most recent message.
const listMessagesRes = await gmail.users.messages.list({
userId: email,
maxResults: 1
});
const messageId = listMessagesRes.messages[0].id;
// Get the message using the message ID.
const message = await gmail.users.messages.get({
userId: email,
id: messageId
});
return message;
ছবি সংযুক্তি বিশ্লেষণ করুন
মেসেজে কোনো ছবি সংযুক্ত থাকলে, watchGmailMessages ছবিটিকে টীকাযুক্ত করার জন্য ক্লাউড ভিশন এপিআই-কে কল করবে। এই কোডল্যাবে, আপনি ক্লাউড ভিশন এপিআই-কে ছবিটি শ্রেণীবদ্ধ করতে এবং বেশ কিছু ইমেজ ট্যাগ ফেরত দিতে বলবেন; উদাহরণস্বরূপ, যদি নীল আকাশের একটি ছবি দেওয়া হয়, ক্লাউড ভিশন এপিআই ' blue ', ' sky ' এবং 'nature' ট্যাগগুলো ফেরত দিতে পারে।
watchGmailMessages ক্লাউড ভিশন এপিআই কল করার জন্য Node.js-এর জন্য ক্লাউড ভিশন এপিআই লাইব্রেরি ব্যবহার করে:
// Tag the attachment using Cloud Vision API
const analyzeAttachment = async (data, filename) => {
var topLabels = ['', '', ''];
if (filename.endsWith('.png') || filename.endsWith('.jpg')) {
const [analysis] = await visionClient.labelDetection({
image: {
content: Buffer.from(data, 'base64')
}
});
const labels = analysis.labelAnnotations;
topLabels = labels.map(x => x.description).slice(0, 3);
}
return topLabels;
};
গুগল শীট আপডেট করুন
watchGmailMessages এই বিশ্লেষণের ফলাফল একটি গুগল শিটে রপ্তানি করে। এতে প্রেরকের নাম, অ্যাটাচমেন্টের নাম এবং ইমেজ অ্যাটাচমেন্টের ট্যাগ (যদি থাকে) অন্তর্ভুক্ত থাকে।
প্রথমে, একটি গুগল শিট তৈরি করুন। গুগল শিটস খুলুন এবং 'স্টার্ট এ নিউ স্প্রেডশিট'-এর নিচে থাকা 'ব্ল্যাঙ্ক টেমপ্লেট'-এ ক্লিক করুন। আপনার শিটের আইডি কপি করুন। উদাহরণস্বরূপ, যদি আপনার ব্রাউজারের ঠিকানাটি দেখতে এইরকম হয়:
https://docs.google.com/spreadsheets/d/abcdefghij01234567890/edit#gid=0
আপনার স্প্রেডশীটের আইডি হল abcdefghij01234567890 । ক্লাউড শেল কোড এডিটরে, gcf-gmail-codelab/pubsub/env_vars.yaml আপডেট করুন এবং YOUR-GOOGLE-SHEET-ID এর জায়গায় আপনার নিজের আইডি বসান।
watchGmailMessages তথ্য যুক্ত করার জন্য Google Sheets API-এর সাথে সংযোগ স্থাপন করে:
const updateReferenceSheet = async (from, filename, topLabels) => {
await googleSheets.spreadsheets.values.append({
spreadsheetId: SHEET,
range: SHEET_RANGE,
valueInputOption: 'USER_ENTERED',
requestBody: {
range: SHEET_RANGE,
majorDimension: 'ROWS',
values: [
[from, filename].concat(topLabels)
]
}
});
};
শেষ ধাপ
ক্লাউড শেল কোড এডিটরে, gcf-gmail-codelab/pubsub/env_vars.yaml খুলুন এবং YOUR-GOOGLE-CLIENT-ID , YOUR-GOOGLE-CLIENT-SECRET , ও YOUR-GOOGLE-CALLBACK-URL এর জায়গায় আপনার নিজের মান বসান। এই মানগুলো আপনি গুগল ক্লাউড কনসোলে খুঁজে পাবেন: বাম দিকের নেভিগেশন মেনু থেকে ক্লাউড ফাংশনস খুলুন, ক্লাউড ফাংশনসের তালিকা থেকে auth_init নির্বাচন করুন এবং এনভায়রনমেন্ট ভ্যারিয়েবলস সেকশনটি খুঁজুন।
কোডটি স্থাপন করুন
ক্লাউড ফাংশনটি ডিপ্লয় করতে নিচের কমান্ডটি চালান:
cd ~ cd gcf-gmail-codelab/pubsub gcloud functions deploy watchGmailMessages --runtime=nodejs8 --trigger-topic=gmail-watch --env-vars-file=env_vars.yaml
আপনি যদি আপনার ক্লাউড পাব/সাব টপিকের নাম gmail-watch ছাড়া অন্য কিছু দিয়ে থাকেন, তাহলে উপরের কমান্ডে gmail-watch পরিবর্তে আপনার টপিকের নামটি ব্যবহার করুন। ক্লাউড ফাংশনটি ডেপ্লয় হতে কয়েক সেকেন্ড সময় লাগতে পারে।
৭. এটি পরীক্ষা করে দেখুন
অভিনন্দন, আপনার কাজ শেষ! একটি ছবি সংযুক্ত করে নিজেকে একটি ইমেল পাঠান। কয়েক সেকেন্ডের মধ্যেই দেখবেন, আপনার তৈরি করা গুগল শিটটি আপনার দেওয়া তথ্য দিয়ে স্বয়ংক্রিয়ভাবে আপডেট হয়ে গেছে।