১. শুরু করার আগে
এই কোডল্যাবে আপনি শিখবেন কীভাবে জেমিনি এপিআই (Gemini API)- এর ফাংশন-কলিং এবং মাল্টি-মোডালিটি বৈশিষ্ট্য ব্যবহার করে গুগল ওয়ার্কস্পেসের কাজগুলো স্বয়ংক্রিয় করা যায়।
পূর্বশর্ত
- অ্যাপস স্ক্রিপ্ট, জাভাস্ক্রিপ্ট বা অনুরূপ কোনো প্রোগ্রামিং ভাষার সাথে প্রাথমিক পরিচিতি
আপনি যা শিখবেন
- জেমিনি এপিআই-এর ফাংশন কলিং এবং মাল্টি-মোডালিটি বৈশিষ্ট্যগুলো কীভাবে কাজে লাগানো যায়।
- কীভাবে একাধিক জেমিনি এপিআই কল একসাথে চেইন করা যায়।
- জেমিনি এপিআই ব্যবহার করে কীভাবে গুগল ওয়ার্কস্পেসের কাজগুলো স্বয়ংক্রিয় করা যায়
আপনার যা প্রয়োজন
- একটি ওয়েব ব্রাউজার।
- একটি জিমেইল অ্যাকাউন্ট। বিকল্পভাবে, একটি গুগল ওয়ার্কস্পেস অ্যাকাউন্ট যেখানে জেমিনি এপিআই-এর নির্দিষ্ট সেটআপ প্রয়োগ করা হয়েছে।
- জেমিনি এপিআই-এর জন্য সমর্থিত অঞ্চল থেকে একটি সংযোগ।
- ঐচ্ছিক: সরাসরি এপিআই অনুরোধ পরীক্ষা করার জন্য
curlপ্রোগ্রামসহ একটি কমান্ড-লাইন ইন্টারফেস।
এই কোডল্যাবের সম্পূর্ণ কোড গিটহাবে থাকা জেমিনি এপিআই কুকবুকে পাওয়া যাবে। আপনার যদি সম্পূর্ণ কোডটির প্রয়োজন হয়, তবে সেটি দেখে নিতে পারেন।
২. জেমিনি এপিআই সেট আপ করুন
মিথুন রাশি সম্পর্কে
জেমিনি মডেলগুলো হলো গুগলের সবচেয়ে বড় এবং সবচেয়ে সক্ষম এআই মডেল পরিবার। আপনার অ্যাপে এই মডেলগুলোর সুবিধা নিতে, আপনি জেমিনি এপিআই (Gemini API) ব্যবহার করতে পারেন। এছাড়াও আপনি গুগল এআই স্টুডিও (Google AI Studio) -তে জেমিনি এপিআই ব্যবহার করে দেখতে পারেন; এটি এপিআই-এর একটি ওয়েব ইন্টারফেস, যেখানে আপনি কোনো কোড না লিখেই প্রম্পটগুলো পরীক্ষা করতে, মডেলের সেটিংস পরিবর্তন করতে এবং কাস্টম মডেল টিউন করতে পারবেন।
একটি চাবি নিন
- জেমিনি এপিআই ব্যবহার করতে, গুগল এআই স্টুডিওতে একটি এপিআই কী তৈরি করুন ।
ঐচ্ছিক: আপনার চাবি পরীক্ষা করুন
আপনার যদি curl সহ কমান্ড-লাইন ব্যবহারের সুযোগ থাকে, তাহলে নিম্নলিখিত ব্লকের প্রথম লাইনে আপনার কী-টি যোগ করুন এবং তারপর API কী-টি পরীক্ষা করার জন্য আপনার টার্মিনালে এটি চালান।
export GOOGLE_API_KEY=Paste_your_API_key_here
curl "https://generativelanguage.googleapis.com/v1beta/models?key=${GOOGLE_API_KEY}"
আপনি JSON ফরম্যাটে মডেলগুলির একটি তালিকা দেখতে পাবেন, যেমন models/gemini-1.0-pro। এর মানে হলো, এটি কাজ করেছে।
৩. ঐচ্ছিক: জেমিনি এপিআই-তে একটি অনুরোধ করুন।
এই ঐচ্ছিক ধাপে, কোনো অ্যাপস স্ক্রিপ্ট অ্যাপে কন্টেন্ট যোগ করার আগে, কন্টেন্ট জেনারেশন কীভাবে কাজ করে তা আরও ভালোভাবে বোঝার জন্য আপনি জেমিনি এপিআই-এর কাছে একটি অনুরোধ পাঠান।
মডেলদের সম্পর্কে
জেমিনি এপিআই বিভিন্ন ক্ষমতা ও সীমাবদ্ধতাযুক্ত বেশ কিছু মডেল প্রদান করে। প্রতিটি মডেল তার ক্ষমতাসহ জেমিনি মডেলস পৃষ্ঠায় তালিকাভুক্ত করা আছে।
আপনার প্রথম অনুরোধ করা হচ্ছে
জেমিনি এপিআই দিয়ে কোনো টেক্সট প্রম্পট সম্পন্ন করাতে হলে, আপনাকে একটি JSON রিকোয়েস্ট তৈরি করে REST API এন্ডপয়েন্টে পাঠাতে হবে।
এটি করার জন্য, এই ধাপগুলো অনুসরণ করুন:
- একটি নতুন ফাইলে নিম্নলিখিত JSON অনুরোধটি লিখুন:
{
contents: [
{
parts: [
{ text: 'The most important aspects of a persuasive presentation are:' }
]
}
]
}
JSON অনুরোধটিতে নিম্নলিখিত নির্দেশটি অন্তর্ভুক্ত রয়েছে: The most important aspects of a persuasive presentation are: মডেলটি এই নির্দেশনাটি সম্পন্ন করবে এবং আপনাকে সরাসরি ফলাফলটি দেবে।
JSON অনুরোধটিতে পূরণ করার জন্য তিনটি শীর্ষ-স্তরের ফিল্ড রয়েছে: contents , generationConfig , এবং safetySettings । এর মধ্যে শুধুমাত্র contents আবশ্যক। বাকিগুলো আউটপুট নিয়ন্ত্রণের ব্যবস্থা প্রদান করে।
- এই JSON-টি একটি
presentation.txtফাইলে সংরক্ষণ করুন এবং তারপর এটিকে সরাসরিcurlএ এইভাবে পাঠান:
curl -H 'Content-Type: application/json' -X POST -d @presentation.txt \
'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro-latest:generateContent?key='${GOOGLE_API_KEY}
এই উদাহরণে আপনি URL-এ নিম্নলিখিত মানগুলি সেট করেছেন:
-
v1betaএপিআই সংস্করণ নির্দেশ করে। -
gemini-1.0-pro-latestমডেল হিসেবে Gemini 1.0 Pro নির্দিষ্ট করে এবং সর্বশেষ স্ন্যাপশট ব্যবহার করে। -
generateContentসেই API মেথডটি নির্দিষ্ট করে যা আপনি কল করবেন।
আপনি নিম্নলিখিতগুলির অনুরূপ ফলাফল দেখতে পাবেন:
{
"candidates": [
{
"content": {
"parts": [
{
"text": "* **Credibility:** The audience must trust that you are an expert on the subject matter and that you have their best interests at heart.\n* **Clearness:** Your message must be easy to understand and follow. Avoid using jargon or technical terms that your audience may not be familiar with.\n* **Concreteness:** Use specific examples and data to support your arguments. Avoid making vague or general claims.\n* **Emotional appeal:** In addition to appealing to the audience's logical side, you should also try to connect with them on an emotional level. Use storytelling, humor, and personal anecdotes to make your points more memorable and engaging.\n* **Strong closing:** End your presentation with a strong call to action. Tell the audience what you want them to do and why it is important for them to do it."
}
],
"role": "model"
},
"finishReason": "STOP",
"index": 0,
"safetyRatings": [...]
}
],
"promptFeedback": {
"safetyRatings": [...]
}
}
পাঠযোগ্যতার সুবিধার্থে, টার্মিনাল আউটপুটটি সাধারণ বিন্যাসে নিচে দেওয়া হলো:
- বিশ্বাসযোগ্যতা: শ্রোতাদের অবশ্যই বিশ্বাস করতে হবে যে আপনি আলোচ্য বিষয়ে একজন বিশেষজ্ঞ এবং আপনি তাদের সর্বোত্তম স্বার্থের কথা ভাবেন।
- স্পষ্টতা: আপনার বার্তাটি সহজবোধ্য ও অনুসরণযোগ্য হতে হবে। এমন কোনো পারিভাষিক শব্দ বা প্রযুক্তিগত পরিভাষা ব্যবহার করা থেকে বিরত থাকুন, যেগুলোর সাথে আপনার শ্রোতারা পরিচিত নাও থাকতে পারেন।
- সুনির্দিষ্টতা: আপনার যুক্তির সমর্থনে নির্দিষ্ট উদাহরণ ও তথ্য ব্যবহার করুন। অস্পষ্ট বা সাধারণ দাবি করা থেকে বিরত থাকুন।
- আবেগিক আবেদন: শ্রোতাদের যৌক্তিক দিককে প্রভাবিত করার পাশাপাশি, আপনার উচিত তাদের সাথে আবেগিক স্তরেও সংযোগ স্থাপন করার চেষ্টা করা। আপনার বক্তব্যকে আরও স্মরণীয় ও আকর্ষণীয় করে তুলতে গল্প বলা, হাস্যরস এবং ব্যক্তিগত অভিজ্ঞতা ব্যবহার করুন।
- জোরালো সমাপ্তি: একটি জোরালো আহ্বানের মাধ্যমে আপনার উপস্থাপনা শেষ করুন। শ্রোতাদের বলুন আপনি তাদের কী করতে চান এবং কেন তা করা তাদের জন্য গুরুত্বপূর্ণ।
generationConfig এবং safetySettings সহ অন্যান্য সেটিংস সম্পর্কে আরও জানতে, প্রম্পট এবং নিরাপত্তা নির্দেশিকা দেখুন।
৪. অ্যাপস স্ক্রিপ্ট থেকে জেমিনি এপিআই কল করুন
- script.new ফাইলটি ভিজিট করলে আপনার জন্য স্বয়ংক্রিয়ভাবে একটি
code.gsঅ্যাপস স্ক্রিপ্ট ফাইল তৈরি হয়ে যাবে। -
code.gsফাইলটির উপর আপনার কার্সরটি রাখুন, এবং তারপর ক্লিক করুন।
নাম পরিবর্তন করুন । - ফাইলের নাম পরিবর্তন করে
utils.gsকরুন। - ফাইল থেকে
myFunctionফাংশনটি মুছে ফেলুন, যাতে ফাইলটি খালি হয়ে যায়।
প্রকল্পে আপনার API কী যোগ করুন
- নেভিগেশন মেনু থেকে প্রজেক্ট সেটিংস নির্বাচন করুন।
- স্ক্রিপ্ট প্রোপার্টিজ-এর অধীনে, অ্যাড স্ক্রিপ্ট প্রোপার্টি-তে ক্লিক করুন।
- Property-এর অধীনে
GOOGLE_API_KEYলিখুন। - 'Value'-এর অধীনে, Google AI Studio থেকে আপনার API কী-টি প্রবেশ করান।

- স্ক্রিপ্ট বৈশিষ্ট্য সংরক্ষণ করুন -এ ক্লিক করুন।
- এডিটরে ফিরে যান।
জেমিনি এপিআই কোড যোগ করুন
utils.gs ফাইলে, এই ধাপগুলো অনুসরণ করুন:
এপিআই কী এবং এন্ডপয়েন্ট সেট আপ করুন:
const properties = PropertiesService.getScriptProperties().getProperties();
const geminiApiKey = properties['GOOGLE_API_KEY'];
const geminiEndpoint = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro-latest:generateContent?key=${geminiApiKey}`;
- নিম্নলিখিত ফাংশনটি যোগ করুন যা একটি নির্দিষ্ট প্রম্পট সহ জেমিনি এপিআই (Gemini API) কল করে:
function callGemini(prompt, temperature=0) {
const payload = {
"contents": [
{
"parts": [
{
"text": prompt
},
]
}
],
"generationConfig": {
"temperature": temperature,
},
};
const options = {
'method' : 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload)
};
const response = UrlFetchApp.fetch(geminiEndpoint, options);
const data = JSON.parse(response);
const content = data["candidates"][0]["content"]["parts"][0]["text"];
return content;
}
- প্রম্পট সেট করার জন্য নিম্নলিখিত ফাংশনটি যোগ করুন:
function testGemini() {
const prompt = "The best thing since sliced bread is";
const output = callGemini(prompt);
console.log(prompt, output);
}
এটা পরীক্ষা করুন
- ক্লিক করুন
সংরক্ষণ করুন। - ফাংশন ড্রপডাউন তালিকা থেকে
testGeminiনির্বাচন করুন এবং ক্লিক করুন
. - প্রয়োজনীয় অনুমতিগুলো গ্রহণ করুন। আপনার কোডটি রান করবে এবং আপনি কনসোলে কিছু আউটপুট দেখতে পাবেন, আর ফলাফলগুলো এক্সিকিউশন লগে থাকবে।

এটা কাজ করেছে!
৫. ছবি সহ জেমিনি এপিআই কল করুন
জেমিনি মডেল পরিবারের অন্যতম শক্তিশালী বৈশিষ্ট্য হলো মাল্টি-মোডাল ইনপুটের সমর্থন, যার অর্থ হলো আপনি শুধু টেক্সট ছাড়াও আরও অনেক কিছু প্রদান করতে পারেন! এই অংশে, আপনি এমন একটি ফাংশন যোগ করবেন যা একটি ছবি সহ জেমিনি এপিআই (Gemini API)-কে কল করে।
-
utils.gsফাইলের শুরুতে, বিদ্যমানconst geminiEndpointডিক্লারেশনের পরে, নিম্নলিখিত লাইনটি যোগ করুন:
const geminiProVisionEndpoint = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.0-pro-vision-latest:generateContent?key=${geminiApiKey}`;
জেমিনি ভিশন কোড যোগ করুন
- এই নতুন যুক্ত হওয়া এন্ডপয়েন্টটিকে কল করার জন্য
utils.gsফাইলে একটি ফাংশন যোগ করুন:
function callGeminiProVision(prompt, image, temperature=0) {
const imageData = Utilities.base64Encode(image.getAs('image/png').getBytes());
const payload = {
"contents": [
{
"parts": [
{
"text": prompt
},
{
"inlineData": {
"mimeType": "image/png",
"data": imageData
}
}
]
}
],
"generationConfig": {
"temperature": temperature,
},
};
const options = {
'method' : 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload)
};
const response = UrlFetchApp.fetch(geminiProVisionEndpoint, options);
const data = JSON.parse(response);
const content = data["candidates"][0]["content"]["parts"][0]["text"];
return content;
}
- নিম্নলিখিত টেস্ট ফাংশনটি যোগ করুন:
function testGeminiVision() {
const prompt = "Provide a fun fact about this object.";
const image = UrlFetchApp.fetch('https://storage.googleapis.com/generativeai-downloads/images/instrument.jpg').getBlob();
const output = callGeminiProVision(prompt, image);
console.log(prompt, output);
}
এই ফাংশনটি ইন্টারনেট থেকে একটি পরীক্ষামূলক ছবি লোড করে এবং আপনার সংজ্ঞায়িত ফাংশনটিতে তা পাঠিয়ে দেয়। পরবর্তীতে, আপনি এটিকে একটি স্প্রেডশিট থেকে চার্ট ব্যবহার করার জন্য সংযুক্ত করবেন, তাই এটি শুধুমাত্র একটি পরীক্ষা।
এটা পরীক্ষা করুন
-
testGeminiVisionফাংশনটি সংরক্ষণ করে চালান এবং তারপর আউটপুটটি পরীক্ষা করুন।

৬. টুল ব্যবহার করে জেমিনি এপিআই কল করুন
টেক্সট এবং ছবির পাশাপাশি, আপনি আপনার প্রম্পটগুলোতে বিভিন্ন টুল ব্যবহারের সুযোগও দিতে পারেন।
টুল-হ্যান্ডলিং কোড যোগ করুন
-
utils.gsফাইলে এমন একটি ফাংশন যোগ করুন যা একটি টুল স্পেসিফিকেশন গ্রহণ করে:
function callGeminiWithTools(prompt, tools, temperature=0) {
const payload = {
"contents": [
{
"parts": [
{
"text": prompt
},
]
}
],
"tools" : tools,
"generationConfig": {
"temperature": temperature,
},
};
const options = {
'method' : 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload)
};
const response = UrlFetchApp.fetch(geminiEndpoint, options);
const data = JSON.parse(response);
const content = data["candidates"][0]["content"]["parts"][0]["functionCall"];
return content;
}
এই স্কিমা এবং উপলব্ধ ফিল্ডগুলো সম্পর্কে আরও তথ্যের জন্য, FunctionDeclaration API রেফারেন্স দেখুন।
এটা পরীক্ষা করুন
- এমন একটি টুল নির্ধারণ করুন যা মডেলটি বর্তমান তারিখ ও সময় খুঁজে বের করতে ব্যবহার করতে পারে:
function testGeminiTools() {
const prompt = "Tell me how many days there are left in this month.";
const tools = {
"function_declarations": [
{
"name": "datetime",
"description": "Returns the current date and time as a formatted string.",
"parameters": {
"type": "string"
}
}
]
};
const output = callGeminiWithTools(prompt, tools);
console.log(prompt, output);
}
এখানে ব্যবহৃত ফরম্যাটটি হলো FunctionDeclaration স্কিমা। আপনি আসলে ডেট-টাইম ফাংশনটি কল করেন না। আপনি শুধু একটি ইঙ্গিত পান যে মডেলটি একটি ফাংশন কলের অনুরোধ করেছে। আপনি পরবর্তী ধাপে ফাংশন কলগুলো পরিচালনা করেন।
- আউটপুট দেখতে
testGeminiToolsফাংশনটি সংরক্ষণ করে চালান।

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

সাধারণভাবে বলতে গেলে, যখন কোনো ব্যবহারকারীর জিজ্ঞাসা আসে, তখন কোন টুলটি ব্যবহার করতে হবে তা নির্ধারণ করার জন্য আপনি জেমিনি এপিআই-এর ফাংশন কলিং ব্যবহার করেন। আপনি তিনটি টুল তৈরি করেন যা নিম্নলিখিত কাজগুলো করতে পারে:
- একটি মিটিং সেট আপ করুন । ডায়াগ্রামের
setupMeeting()ফাংশনটি Gemini 1.0 Pro API-কে কল করে Google Drive-এর একটি ব্লগের সারসংক্ষেপ তৈরি করে এবং সেই সারসংক্ষেপটি Google Calendar-এ নতুন তৈরি করা একটি মিটিং-এ যোগ করে। - একটি চার্ট থেকে প্রাপ্ত তথ্যের ভিত্তিতে একটি ইমেলের খসড়া তৈরি করুন । ডায়াগ্রামের
draftEmail()ফাংশনটি Gemini 1.0 Pro Vision-কে আহ্বান করে Google Sheets-এর একটি চার্ট বিশ্লেষণ করে এবং সেই বিশ্লেষণের উপর ভিত্তি করে Gmail-এ একটি ইমেল রচনা করে। - একটি কাঠামো ডেক তৈরি করুন । ডায়াগ্রামের
createDeck()ফাংশনটি গুগল স্লাইডসের জন্য একটি ডেকের বুলেট পয়েন্ট নিয়ে চিন্তাভাবনা করতে Gemini 1.0 Pro-কে আহ্বান করে।
প্রতিটি সরঞ্জামের জন্য আপনাকে নিম্নলিখিত তিনটি কাজ করতে হবে:
- জেমিনি এপিআই-এর ফাংশন কলিং রেসপন্সটি কোনো
if...elseব্লকের মধ্যে নির্দিষ্ট টুলটিকে কল করতে বলছে কিনা, তা নির্ধারণ করুন। - টুলের কার্যকারিতা বাস্তবায়নের জন্য প্রকৃত ফাংশনটি যোগ করুন।
- জেমিনি এপিআই (Gemini API) ব্যবহার করে টুলটি ঘোষণা করুন, যাতে জেমিনি মডেলটি টুলটির অস্তিত্ব সম্পর্কে জানতে পারে এবং সঠিক ফাংশন কলিং প্রতিক্রিয়া ফেরত দিতে পারে।
৮. অ্যাপস স্ক্রিপ্টের সাথে একটি মিটিং সেট আপ করুন।
প্রথমত, আপনি গুগল ক্যালেন্ডারে একটি মিটিং সেটআপ স্বয়ংক্রিয় করেন, কিন্তু এর সাথে একটি বিবরণও যোগ করেন, যা গুগল ড্রাইভের একটি ফাইলের সারসংক্ষেপ।
এটি করার জন্য, এই ধাপগুলো অনুসরণ করুন:
- এই টেক্সট ফাইলটি ডাউনলোড করুন, যেটি হলো জেমিনি ১.৫ প্রো লঞ্চ ব্লগের টেক্সট কপি।
- ফাইলটি আপনার গুগল ড্রাইভের রুট ফোল্ডারে আপলোড করুন।
- এডিটরে একটি
main.gsফাইল তৈরি করুন এবং তারপর নিম্নলিখিত কোডটি যোগ করুন:
function main() {
const userQuery = "Set up a meeting at 10AM tomorrow with Helen to discuss the news in the Gemini-blog.txt file.";
var tool_use = callGeminiWithTools(userQuery, WORKSPACE_TOOLS);
Logger.log(tool_use);
if(tool_use['name'] == "setupMeeting") {
setupMeeting(tool_use['args']['time'], tool_use['args']['recipient'], tool_use['args']['filename']);
Logger.log("Your meeting has been set up.");
}
else
Logger.log("no proper tool found");
}
এখানে, আপনি জেমিনি এপিআই-এর ফাংশন কল করার ক্ষমতা ব্যবহার করবেন। এরপর, আপনাকে টুল ফাংশনটি সংজ্ঞায়িত করতে হবে।
- On the left of the editor, next to Services , click + Add a service > Google Calendar API > Add . This enables the advanced Google Calendar service, which you need to use for some advanced APIs later.

-
utils.gsফাইলে নিম্নলিখিত কোডটি যোগ করুন:
function attachFileToMeeting(event, file, fileName) {
// Get the iCal ID for the event.
const iCalEventId = event.getId();
// Log the ID and title for debugging.
console.log(`iCal event ID: ${iCalEventId}`);
console.log(`event Title: ${event.getTitle()}`);
// Set up the options for listing the event with the advanced Google Calendar service.
const options = {
iCalUID: iCalEventId,
};
// Use the primary calendar as the calendar ID to list events.
const calendarId = 'primary';
// Use the advanced Google Calendar service to list the event.
const calEvents = Calendar.Events.list(calendarId, options);
// Get the Calendar ID used by the advanced Google Calendar service.
const eventId = calEvents.items[0].id;
// Get the file URL for the attachment.
const fileUrl = file.getUrl();
// Set up the patch options to add the file.
var patch = {
attachments: [{
'fileUrl': fileUrl,
'title': fileName
}]
};
// Patch the event to add the file as an attachment.
Calendar.Events.patch(patch, 'primary', eventId, {"supportsAttachments": true});
}
function setupMeeting(time, recipient, filename) {
const files = DriveApp.getFilesByName(filename);
const file = files.next();
const blogContent = file.getAs("text/*").getDataAsString();
var geminiOutput = callGemini("Give me a really short title of this blog and a summary with less than three sentences. Please return the result as a JSON with two fields: title and summary. \n" + blogContent);
// The Gemini model likes to enclose the JSON with ```json and ```
geminiOutput = JSON.parse(geminiOutput.replace(/```(?:json|)/g, ""));
const title = geminiOutput['title'];
const fileSummary = geminiOutput['summary'];
const event = CalendarApp.getDefaultCalendar().createEventFromDescription(`meet ${recipient} at ${time} to discuss "${title}"`);
event.setDescription(fileSummary);
attachFileToMeeting(event, file, filename);
}
এই কোডটি নিম্নলিখিত কাজগুলো করে:
-
setupMeeting()ফাংশনটি আপনার গুগল ড্রাইভেGemini-blog.txtফাইলটি খুঁজে বের করে। এই ফাইলের নামটি ৩ নং ধাপে Gemini API-এর ফাংশন কলিংয়ের মাধ্যমে স্বয়ংক্রিয়ভাবে ফেরত আসে। -
setupMeeting()ফাংশনটি ফাইলের বিষয়বস্তুর সারসংক্ষেপ করার জন্য Gemini API-কে কল করে, মুক্ত-ফর্ম বিবরণ ব্যবহার করে CalendarApp-এর সাথে একটি মিটিং সেট আপ করে এবং মিটিংটিতে সারসংক্ষেপটি যোগ করে। -
setupMeeting()ফাংশনটি, উন্নত গুগল ক্যালেন্ডার পরিষেবা ব্যবহার করে ব্লগ ফাইলটিকে মিটিংয়ের সাথে সংযুক্ত করার জন্যattachFileToMeeting()ফাংশনটিকে কল করে।
-
utils.gsফাইলের শীর্ষে নিম্নলিখিত কোডটি যোগ করুন:
const WORKSPACE_TOOLS = {
"function_declarations": [
{
"name": "setupMeeting",
"description": "Sets up a meeting in Google Calendar.",
"parameters": {
"type": "object",
"properties": {
"time": {
"type": "string",
"description": "The time of the meeting."
},
"recipient": {
"type": "string",
"description": "The name of the recipient."
},
"filename": {
"type": "string",
"description": "The name of the file."
},
},
"required": [
"time",
"recipient",
"filename"
]
}
},
// You add tools here.
]
};
- এডিটরে,
main.gsফাইলে ফিরে যান এবং ক্লিক করুন
. - যদি গুগল ওয়ার্কস্পেস স্ক্রিপ্টটি চালানোর জন্য আপনার কাছে অনুমতি চায়, তাহলে ওকে (OK) ক্লিক করুন।
কয়েক সেকেন্ডের মধ্যে এক্সিকিউশন লগে একটি বার্তা প্রদর্শিত হয়, যা আপনাকে জানিয়ে দেয় যে আপনার মিটিংটি সেট আপ করা হয়েছে।
- গুগল ক্যালেন্ডারে, সারাংশ এবং সংযুক্তি সহ মিটিংটি খুঁজুন।

৯. অ্যাপস স্ক্রিপ্ট ব্যবহার করে একটি ইমেলের খসড়া তৈরি করুন।
এরপর, আপনি জিমেইলে একটি ইমেলের খসড়া তৈরি করার প্রক্রিয়াটি স্বয়ংক্রিয় করবেন। পরিস্থিতিটি হলো: ধরুন, আপনি গুগল শিটসে ডেটা বিশ্লেষণ করছেন। আপনি সমস্ত সংখ্যাগুলো যথাস্থানে রেখে একটি চার্ট তৈরি করলেন। আপনি সেই চার্টের উপর ভিত্তি করে একটি ইমেলের খসড়া তৈরি করতে জেমিনি প্রো ভিশন এপিআই (Gemini Pro Vision API) ব্যবহার করতে চান।
এটি করার জন্য, এই ধাপগুলো অনুসরণ করুন:
- এই শীটটি খুলুন এবং ফাইল -> একটি অনুলিপি তৈরি করুন -এ ক্লিক করুন।
- 'কপি ডকুমেন্ট' ডায়ালগ বক্সের ' নেম ' টেক্সট বক্সে, ডিফল্ট নাম '
Copy of CollegeExpenses-এর পরিবর্তেCollegeExpenses' লিখুন। -
main.gsফাইলে, পূর্ববর্তী ইউজার কোয়েরিটি একটি নতুন কোয়েরি দিয়ে প্রতিস্থাপন করুন এবং তারপরif...elseস্টেটমেন্টে নিম্নলিখিত কোডটি যোগ করুন:
function main() {
// const userQuery = "Set up a meeting at 5PM with Helen to discuss the news in the Gemini-1.5-blog.txt file.";
const userQuery = "Draft an email for Mary with insights from the chart in the CollegeExpenses sheet.";
if(...) {...}
// Add this code
else if(tool_use['name'] == "draftEmail") {
draftEmail(tool_use['args']['sheet_name'], tool_use['args']['recipient']);
Logger.log("Check your Gmail to review the draft");
}
else {...}
}
-
utils.gsফাইলে নিম্নলিখিত কোডটি যোগ করুন:
function draftEmail(sheet_name, recipient) {
const prompt = `Compose the email body for ${recipient} with your insights for this chart. Use information in this chart only and do not do historical comparisons. Be concise.`;
var files = DriveApp.getFilesByName(sheet_name);
var sheet = SpreadsheetApp.openById(files.next().getId()).getSheetByName("Sheet1");
var expenseChart = sheet.getCharts()[0];
var chartFile = DriveApp.createFile(expenseChart.getBlob().setName("ExpenseChart.png"));
var emailBody = callGeminiProVision(prompt, expenseChart);
GmailApp.createDraft(recipient+"@demo-email-provider.com", "College expenses", emailBody, {
attachments: [chartFile.getAs(MimeType.PNG)],
name: 'myname'
});
}
এই ফাংশনটি শীট থেকে কলেজের খরচের তালিকাটি সংগ্রহ করে ইমেলের খসড়া তৈরির জন্য জেমিনি প্রো ভিশন-এ পাঠায়। জেমিনি প্রো ভিশন তালিকাটি থেকে তথ্য সংগ্রহ করে আপনার হয়ে ইমেলের মূল অংশের খসড়া তৈরি করে।
-
utils.gsফাইলে,You add tools hereকমেন্টের পরেWORKSPACE_TOOLSঅবজেক্টে নিম্নলিখিত কোডটি যোগ করুন:
WORKSPACE_TOOLS = {
"function_declarations": [
// You add tools here.
{
"name": "draftEmail",
"description": "Write an email by analyzing data or charts in a Google Sheets file.",
"parameters": {
"type": "object",
"properties": {
"sheet_name": {
"type": "string",
"description": "The name of the sheet to analyze."
},
"recipient": {
"type": "string",
"description": "The name of the recipient."
},
},
"required": [
"sheet_name",
"recipient"
]
}
},
]
};
- এডিটরে,
main.gsফাইলে ফিরে যান এবং তারপর ক্লিক করুন
. - ১০ থেকে ২০ সেকেন্ড পর আপনার জিমেইল খুলুন। আপনি এইরকম একটি ইমেইল ড্রাফট দেখতে পাবেন:
পাঠানোর আগে আপনি ইমেলের খসড়াটি সংশোধন করতে পারেন। আপনার দেওয়া একটি সংক্ষিপ্ত নির্দেশনা এবং চার্টের পর জেমিনি প্রো ভিশন সম্পূর্ণভাবে ইমেলটি লিখে দেয়।
১০. অ্যাপস স্ক্রিপ্ট ব্যবহার করে একটি কাঠামো ডেক তৈরি করুন।
এরপরে, আপনি অ্যাপস স্ক্রিপ্ট ব্যবহার করে গুগল স্লাইডসে একটি স্কেলেটন ডেক তৈরির প্রক্রিয়াটি স্বয়ংক্রিয় করবেন।
এটি করার জন্য, এই ধাপগুলো অনুসরণ করুন:
-
main.gsফাইলে, পূর্ববর্তী ইউজার কোয়েরিটি একটি নতুন কোয়েরি দিয়ে প্রতিস্থাপন করুন এবংif...elseস্টেটমেন্টে নিম্নলিখিত কোডটি যোগ করুন:
function main() {
// const userQuery = "Draft an email for Mary with insights from the chart in the CollegeExpenses sheet.";
const userQuery = "Help me put together a deck about water conservation.";
if(...) {...}
// Add this code
else if(tool_use['name'] == 'createDeck') {
deckURL = createDeck(tool_use['args']['topic']);
Logger.log("Deck URL: " + deckURL);
}
else {...}
}
-
utils.gsফাইলে নিম্নলিখিত কোডটি যোগ করুন:
function createDeck(topic) {
const prompt = `I'm preparing a ${NUM_SLIDES}-slide deck to discuss ${topic}. Please help me brainstorm and generate main bullet points for each slide. Keep the title of each slide short. Please produce the result as a valid JSON so that I can pass it to other APIs.`;
var geminiOutput = callGemini(prompt, 0.4);
// The Gemini model likes to enclose the JSON with ```json and ```
geminiOutput = geminiOutput.replace(/```(?:json|)/g, "");
const bulletPoints = JSON.parse(geminiOutput);
// Create a Google Slides presentation.
const presentation = SlidesApp.create("My New Presentation");
// Set up the opening slide.
var slide = presentation.getSlides()[0];
var shapes = slide.getShapes();
shapes[0].getText().setText(topic);
var body;
for (var i = 0; i < NUM_SLIDES; i++) {
slide = presentation.appendSlide(SlidesApp.PredefinedLayout.TITLE_AND_BODY);
shapes = slide.getShapes();
// Set title.
shapes[0].getText().setText(bulletPoints['slides'][i]['title']);
// Set body.
body = "";
for (var j = 0; j < bulletPoints['slides'][i]['bullets'].length; j++) {
body += '* ' + bulletPoints['slides'][i]['bullets'][j] + '\n';
}
shapes[1].getText().setText(body);
}
return presentation.getUrl();
}
এই ফাংশনটি একটি নির্দিষ্ট বিষয় নিয়ে ব্রেইনস্টর্মিং করার জন্য জেমিনি এপিআই-কে কল করে এবং বুলেট পয়েন্টগুলো এই ফরম্যাটে ফেরত দেয়।
JSON থেকে, এবং তারপর একটি স্কেলেটন ডেক পূরণ করতে অ্যাপস স্ক্রিপ্ট ব্যবহার করুন।
-
utils.gsফাইলে,You add tools hereকমেন্টের পরেWORKSPACE_TOOLSঅবজেক্টে নিম্নলিখিত কোডটি যোগ করুন:
WORKSPACE_TOOLS = {
"function_declarations": [
// You add tools here.
{
"name": "createDeck",
"description": "Build a simple presentation deck with Google Slides and return the URL.",
"parameters": {
"type": "object",
"properties": {
"topic": {
"type": "string",
"description": "The topic that the presentation is about."
},
},
"required": [
"topic"
]
}
},
]
};
-
utils.gsফাইলের শীর্ষে নিম্নলিখিত কনস্ট্যান্টটি সংজ্ঞায়িত করুন:
const NUM_SLIDES = 3;
উদ্বোধনী স্লাইডটি ছাড়াও জেমিনি মডেল এই সংখ্যক স্লাইড তৈরি করে।
- এডিটরে,
main.gsফাইলে ফিরে যান এবং তারপর ক্লিক করুন
কয়েক সেকেন্ডের মধ্যে আপনি এক্সিকিউশন লগে একটি প্রেজেন্টেশন ইউআরএল দেখতে পাবেন। - আপনার ব্রাউজার ব্যবহার করে ইউআরএলটি খুলুন। আপনি বুলেট পয়েন্টে ভরা একটি প্রাথমিক ডেক দেখতে পাবেন।

১১. অন্বেষণের জন্য ধারণা
এই তিনটি ইন্টিগ্রেশন ছাড়াও, আপনি নিম্নলিখিত ধারণাগুলো অন্বেষণ করতে পারেন:
- গুগল চ্যাটে একটি চ্যাটবট তৈরি করুন । লার্জ ল্যাঙ্গুয়েজ মডেল (LLM)-এর অন্যতম জনপ্রিয় একটি ব্যবহার হলো চ্যাটবট তৈরি করা। জেমিনি এপিআই (Gemini API) ব্যবহার করে গুগল চ্যাটের জন্য চ্যাটবট তৈরি করা সহজ। আরও তথ্যের জন্য, গুগল চ্যাট এপিআই এবং কোডল্যাব ‘বিল্ড অ্যাপস ফর গুগল চ্যাট উইথ জেমিনি’ দেখুন।
- আপনার গুগল ড্রাইভ বা কিপ-এ থাকা নিজস্ব ডেটা দিয়ে রিট্রিভাল-অগমেন্টেড জেনারেশন (RAG) করুন । এই কোডল্যাবে, আপনি সারসংক্ষেপ তৈরির জন্য শুধুমাত্র একটি টেক্সট ফাইল ব্যবহার করবেন। তবে, আপনি আপনার ব্যক্তিগত গুগল ড্রাইভ এবং কিপ-এর কন্টেন্ট—যেমন নোট, পিডিএফ, এবং ছবি—জেমিনি এপিআই (Gemini API), একটি ভেক্টর ডেটাবেস, এবং ঐচ্ছিকভাবে ল্যাংচেইন (LangChain )-এর মতো একটি অর্কেস্ট্রেশন টুলের সাথে ব্যবহার করে RAG করতে পারেন এবং আপনার ডেটার উপর ভিত্তি করে মডেলের প্রতিক্রিয়া ব্যক্তিগতকৃত করতে পারেন।
- জেমিনি এপিআই-এর মাল্টি-টার্ন ফাংশন-কলিং ক্ষমতা ব্যবহার করুন । জেমিনি এপিআই-এর ফাংশন কলিং এক টার্নে সীমাবদ্ধ নয় এবং আপনি আরও জটিল কাজের জন্য মাল্টি-টার্ন ফাংশন কলিং করতে পারেন।
- গুগল ওয়ার্কস্পেসের বাইরেও যান । এখন যেহেতু আপনি বুঝে গেছেন কিভাবে জেমিনি এপিআইকে গুগল ওয়ার্কস্পেসের সাথে ইন্টিগ্রেট করতে হয়, আপনি গুগল ওয়ার্কস্পেসের বাইরে গিয়ে বিশ্বের অন্যান্য এপিআইগুলোও ব্যবহার করতে পারবেন।
১২. অভিনন্দন
আপনি জেমিনি এপিআই-এর মাল্টি-মোডাল সক্ষমতা এবং ফাংশন কলিং সম্পর্কে জেনেছেন। আপনি অ্যাপস স্ক্রিপ্ট ব্যবহার করে গুগল ওয়ার্কস্পেসের কিছু কাজ স্বয়ংক্রিয় করতে সেগুলো প্রয়োগ করেছেন!