এই গাইড থেকে আপনি জানতে পারবেন যে কীভাবে এমন একটি ধাপ তৈরি করতে হয় যা ব্যবহারকারীরা Google Workspace Studio-তে ফ্লোতে যোগ করতে পারবেন।
ফ্লো-এর টাস্কের ক্রমের মধ্যে একটি ধাপ হল একটি একক ধাপ। ধাপগুলি কোনও ফ্লো শুরু করতে পারে না।
উদাহরণ হিসেবে, পাটিগণিত করে এমন একটি ধাপ বিবেচনা করুন। এটি ব্যবহারকারীকে দুটি মান এবং একটি গণিত অপারেশন জিজ্ঞাসা করে। তারপর এটি ভ্যালুর উপর গাণিতিক অপারেশন পারফর্ম করে এবং ফলাফল আউটপুট দেয়।
একটি ধাপ তৈরি করতে, অ্যাড-অনের ম্যানিফেস্ট ফাইলে এটি কনফিগার করুন, Google Workspace অ্যাড-অনের কোডে অ্যাপ্লিকেশন লজিক লিখুন এবং ধাপটি ডিপ্লয় ও পরীক্ষা করুন।
ধাপটি সংজ্ঞায়িত করুন
কোনও ধাপ কনফিগার করতে, ম্যানিফেস্ট ফাইলে সেটি ডিফাইন করুন এবং কোডে এর অ্যাপ্লিকেশন লজিক লিখুন।
ম্যানিফেস্ট ফাইলে ধাপটি নির্ধারণ করুন
ম্যানিফেস্ট ফাইলে, appsscript.json:
- অ্যাড-অনের কোডে সংশ্লিষ্ট
ফাংশনের নামে
onConfigFunctionওonExecuteFunctionসেট করুন। এই উদাহরণে, ফাংশনগুলিকেonConfigCalculateএবংonExecuteCalculateবলা হয়।onConfigFunctionধাপ সেট-আপ ও কনফিগার করে। প্রয়োজন হলে, ধাপটি সম্পূর্ণ করার জন্য প্রয়োজনীয় ডেটা ব্যবহারকারীর থেকে সংগ্রহ করে, যেমন ইমেল পাঠানোর জন্য ঠিকানা। এই নির্দেশিকার উদাহরণে, দুটি মান ও একটি গাণিতিক অপারেশন নির্দিষ্ট করুন।onExecuteFunctionধাপটি এক্সিকিউট করে। ব্যবহারকারীদের থেকে ডেটা সংগ্রহ করা হলে, সেই ডেটা এই ফাংশনে পাস করা হয়। প্রযোজ্য হলে, একটি আউটপুট রিটার্ন করে। এই গাইডটির উদাহরণে, গণিত সংক্রান্ত গণনা করে ফলাফল রিটার্ন করে।
প্রয়োজনীয় ইনপুট ও আউটপুট সেট করুন, যা ধাপটিকে ডেটা সংগ্রহ করতে এবং পরবর্তী ধাপে পাঠাতে সাহায্য করে। এই উদাহরণে, ব্যবহারকারীকে দুটি মান ও
inputs[]-এ সংজ্ঞায়িত গাণিতিক অপারেশন সম্পর্কে জিজ্ঞাসা করুন।outputs[]-এ যেমন উল্লেখ করা আছে, সেই অনুযায়ী গণনা করা ফলাফল আউটপুট হিসেবে দেখাও।ইনপুট ও আউটপুট সম্পর্কে আরও জানতে, ইনপুট ভেরিয়েবল ও আউটপুট ভেরিয়েবল দেখুন। ফ্লো যাতে কোনও সমস্যা ছাড়াই রান করে তা নিশ্চিত করতে, ইনপুট ভেরিয়েবল যাচাই করুন।
ক্যালকুলেটর ধাপের জন্য ম্যানিফেস্ট ফাইল এখানে দেওয়া হল:
JSON
{
"timeZone": "America/Los_Angeles",
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"addOns": {
"common": {
"name": "Calculator",
"logoUrl": "https://www.gstatic.com/images/branding/productlogos/calculator_search/v1/web-24dp/logo_calculator_search_color_1x_web_24dp.png",
"useLocaleFromApp": true
},
"studio": {
"flows": {
"workflowElements": [
{
"id": "calculatorDemo",
"state": "ACTIVE",
"name": "Calculate",
"description": "Asks the user for two values and a math operation, then performs the math operation on the values and outputs the result.",
"workflowAction": {
"inputs": [
{
"id": "value1",
"description": "value1",
"cardinality": "SINGLE",
"dataType": {
"basicType": "INTEGER"
}
},
{
"id": "value2",
"description": "value2",
"cardinality": "SINGLE",
"dataType": {
"basicType": "INTEGER"
}
},
{
"id": "operation",
"description": "operation",
"cardinality": "SINGLE",
"dataType": {
"basicType": "STRING"
}
}
],
"outputs": [
{
"id": "result",
"description": "Calculated result",
"cardinality": "SINGLE",
"dataType": {
"basicType": "INTEGER"
}
}
],
"onConfigFunction": "onConfigCalculate",
"onExecuteFunction": "onExecuteCalculate"
}
}
]
}
}
}
}
এরপর, কোডে ধাপটি সংজ্ঞায়িত করে সহায়ক কোড লিখুন।
কোডে ধাপটি নির্ধারণ করুন
অ্যাপ্লিকেশন কোডে, নিম্নলিখিত কাজগুলি করুন:
onConfigFunctionলিখুন, এই উদাহরণে যাকেonConfigCalculateবলা হয়েছে। ব্যবহারকারীরা ফ্লোতে কোনও ধাপ যোগ করলে, তারা ফ্লো বিল্ডারে ধাপের বিভিন্ন দিক কনফিগার করতে পারবেন। ব্যবহারকারীর থেকে প্রয়োজনীয় তথ্য সংগ্রহ করতে,onConfigFunctionএকটি কনফিগারেশন কার্ড সংজ্ঞায়িত করে।অ্যাড-অনে ইউজার ইন্টারফেসের বিল্ডিং ব্লক হল কার্ড। কার্ডে নির্দিষ্ট লেআউট, বোতামের মতো ইন্টার্যাক্টিভ UI এলিমেন্ট এবং ছবির মতো রিচ মিডিয়া ব্যবহার করা যায়। কার্ডের মাধ্যমে আপনি কোনও ব্যবহারকারীর থেকে এমন ডেটা পেতে পারেন যা ধাপটি চালানোর জন্য প্রয়োজন, যেমন ইমেল পাঠানোর জন্য ইমেল আইডি।
onConfigFunctionএকটি কার্ড ফেরত দেয়। এই কার্ডটি UI নির্ধারণ করে যেখানে ব্যবহারকারীরা ধাপের ডেটা সেট করে। এই উদাহরণে,onConfigFunctionএকটি কার্ড তৈরি করে যেখানে ব্যবহারকারীকে দুটি ভ্যালু ও একটি গাণিতিক অপারেশন করতে বলা হয়।onExecuteFunctionলিখুন, এই উদাহরণে যাকেonExecuteCalculateবলা হয়েছে। ফ্লোতে কোনও স্টেপ রান করলে,onExecuteFunctionরান করে।onConfigFunction-এ যেভাবে উল্লেখ করা হয়েছে, কনফিগারেশনের সময় ব্যবহারকারীর সেট করা যেকোনও ইনপুট ভ্যালুonExecuteFunction-এ পাস করা হয়।onExecuteFunctionলিখুন যাতে এটি প্রদত্ত ইনপুট ব্যবহার করে সিঙ্ক্রোনাসভাবে তার টাস্ক সম্পাদন করে। আপনার ফ্লোয়ের ম্যানিফেস্টে উল্লেখ করাonExecuteFunctionসব আউটপুট ফেরত দিতে হবে নইলে সমস্যা হবে।
এই কোড স্যাম্পেলে একটি সহায়ক ফাংশন, outputVariables, অন্তর্ভুক্ত আছে, যা
ধাপ থেকে আউটপুট হিসেবে প্রদত্ত ভেরিয়েবেল তৈরি করে এবং পাঠায়।
আপনার ধাপটি পরীক্ষা করার জন্য প্রস্তুত।
ক্যালকুলেটর ধাপের কোড এখানে দেওয়া হল:
Apps Script
/**
* Generates and displays a configuration card for the sample calculation step.
*
* This function creates a card with input fields for two values and a drop-down
* for selecting an arithmetic operation.
*
* The input fields are configured to let the user select outputs from previous
* steps as input values using the `hostAppDataSource` property.
*/
function onConfigCalculate() {
const firstInput = CardService.newTextInput()
.setFieldName("value1")
.setTitle("First Value")
.setHostAppDataSource(
CardService.newHostAppDataSource()
.setWorkflowDataSource(
CardService.newWorkflowDataSource()
.setIncludeVariables(true)
)
);
const secondInput = CardService.newTextInput()
.setFieldName("value2")
.setTitle("Second Value").setHostAppDataSource(
CardService.newHostAppDataSource()
.setWorkflowDataSource(
CardService.newWorkflowDataSource()
.setIncludeVariables(true)
)
);
const selectionInput = CardService.newSelectionInput()
.setTitle("operation")
.setFieldName("operation")
.setType(CardService.SelectionInputType.DROPDOWN)
.addItem("+", "+", false)
.addItem("-", "-", true)
.addItem("x", "x", false)
.addItem("/", "/", false);
const sections = CardService.newCardSection()
.setHeader("Action_sample: Calculate")
.setId("section_1")
.addWidget(firstInput)
.addWidget(selectionInput)
.addWidget(secondInput)
var card = CardService.newCardBuilder()
.addSection(sections)
.build();
return card;
}
/**
* Returns output variables from a step.
*
* This function constructs an object that, when returned, sends the
* provided variable values as output from the current step.
* The variable values are logged to the console for debugging purposes.
*/
function outputVariables(variableDataMap) {
const workflowAction = AddOnsResponseService.newReturnOutputVariablesAction()
.setVariableDataMap(variableDataMap);
const hostAppAction = AddOnsResponseService.newHostAppAction()
.setWorkflowAction(workflowAction);
const renderAction = AddOnsResponseService.newRenderActionBuilder()
.setHostAppAction(hostAppAction)
.build();
return renderAction;
}
/**
* Executes the calculation step based on the inputs from a flow event.
*
* This function retrieves input values and the operation from the flow event,
* performs the calculation, and returns the result as an output variable.
* The function logs the event for debugging purposes.
*/
function onExecuteCalculate(event) {
console.log("output: " + JSON.stringify(event));
var calculatedValue = 0;
var value1 = event.workflow.actionInvocation.inputs["value1"].integerValues[0];
var value2 = event.workflow.actionInvocation.inputs["value2"].integerValues[0];
var operation = event.workflow.actionInvocation.inputs["operation"].stringValues[0];
if (operation == "+") {
calculatedValue = value1 + value2;
} else if (operation == "-") {
calculatedValue = value1 - value2;
} else if (operation == "x") {
calculatedValue = value1 * value2;
} else if (operation == "/") {
calculatedValue = value1 / value2;
}
const variableDataMap = { "result": AddOnsResponseService.newVariableData().addIntegerValue(calculatedValue) };
return outputVariables(variableDataMap);
}
আপনার পদক্ষেপ পরীক্ষা করা
আপনার ধাপ পরীক্ষা করতে, আপনার অ্যাড-অনের জন্য একটি টেস্ট ডিপ্লয়মেন্ট সেট-আপ করুন, ফ্লোতে ধাপটি যোগ করুন এবং তারপর ফ্লোটি চালান।
আপনার অ্যাড-অনের জন্য টেস্ট ডিপ্লয়মেন্ট সেট-আপ করুন:
- Apps Script এডিটরে স্ক্রিপ্ট প্রোজেক্ট খুলুন।
- ডিপ্লয় করুন > ডিপ্লয়মেন্ট পরীক্ষা করুন বিকল্পে ক্লিক করুন।
- ইনস্টল করুন বিকল্পে ক্লিক করুন।
- স্ক্রিনের সবচেয়ে নিচে, হয়ে গেছে বিকল্পে ক্লিক করুন।
আপনি অন্য ব্যবহারকারীদের তাদের অ্যাকাউন্টের সাথে Apps Script প্রোজেক্ট শেয়ার করে অ্যাড-অন পরীক্ষা করতে দিতে পারেন (সম্পাদনার অ্যাক্সেস প্রয়োজন)। তারপর, ব্যবহারকারীকে আগের ধাপগুলি অনুসরণ করতে বলুন।
ইনস্টল করা হয়ে গেলে, Flows-এ অ্যাড-অন অবিলম্বে উপলভ্য হয়ে যায়। অ্যাড-অন দেখানোর আগে আপনাকে হয়ত Flows রিফ্রেশ করতে হবে। এছাড়াও, আপনাকে অবশ্যই অ্যাড-অন ব্যবহার করার আগে সেটি অনুমোদন করতে হবে।
টেস্ট ডিপ্লয়মেন্ট সম্পর্কে আরও জানতে, কোনও অপ্রকাশিত অ্যাড-অন ইনস্টল করুন দেখুন।
Flows খুলুন।
আপনার ধাপ অন্তর্ভুক্ত করে এমন একটি ফ্লো তৈরি করুন:
- নতুন ফ্লো বিকল্পে ক্লিক করুন।
- ফ্লো কীভাবে শুরু হবে তা বেছে নিন। কোনও ধাপ পরীক্ষা করার সময়, এমন একটি স্টার্টার বেছে নেওয়া ভাল যা আপনি নিজেই শুরু করতে পারবেন, যেমন নিজেকে ইমেল পাঠানো। আপনার ধাপের জন্য ইনপুট ভেরিয়েবেল প্রয়োজন হলে, স্টার্টারের আউটপুটের অংশ হিসেবে ইনপুট ভেরিয়েবেল কনফিগার করুন।
- ধাপ যোগ করুন বিকল্পে ক্লিক করুন। আপনার তৈরি বা আপডেট করা ধাপটি বেছে নিন, যার নাম Calculate।
- আপনার ধাপ কনফিগার করুন। ক্যালকুলেট ধাপের জন্য, দুটি ভ্যালু ও একটি গণিত অপারেশন বেছে নিন। ধাপটি অটোমেটিক সেভ হয়ে যায়।
- আপনার ধাপের আউটপুট পরীক্ষা করতে, আরেকটি ধাপ যোগ করুন। যেমন, ইমেল মেসেজে আউটপুট যোগ করতে, আপনি Gmail-এর মেসেজ পাঠান ধাপ যোগ করতে পারেন। মেসেজ বিকল্পে, ভেরিয়েবল বিকল্পে ক্লিক করে আপনার ধাপের আউটপুট বেছে নিন। গণনা করার ধাপের জন্য, ভেরিয়েবল > ধাপ ২: গণনা করা ফলাফল > গণনা করা ফলাফল বেছে নিন। ভেরিয়েবলটি মেসেজ ফিল্ডে চিপ হিসেবে দেখা যায়।
- চালু করুন বিকল্পে ক্লিক করুন। আপনার ফ্লো চালানোর জন্য রেডি।
আপনার ফ্লো-এর স্টার্টার বন্ধ করে ফ্লো রান করুন। যেমন, আপনার ফ্লো যদি কোনও ইমেল পাওয়ার পরে শুরু হয়, তাহলে নিজেকে একটি ইমেল পাঠান।
ফ্লো প্রত্যাশা অনুযায়ী চলছে কিনা তা যাচাই করুন। ফ্লো বিল্ডারের অ্যাক্টিভিটি ট্যাবে গিয়ে লগ চেক করুন। অ্যাক্টিভিটি ট্যাবে কীভাবে কাস্টম লগ তৈরি করতে হয় তা জানতে, অ্যাক্টিভিটি লগ দেখুন।
সম্পর্কিত বিষয়
- ইনপুট ভেরিয়েবল
- ইনপুট ভেরিয়েবেল যাচাই করা
- আউটপুট ভেরিয়েবেল
- কাস্টম রিসোর্স নির্ধারণ করা
- ডায়নামিক ভেরিয়েবল
- লগ অ্যাক্টিভিটি ও সমস্যা
- Workspace Studio ইভেন্ট অবজেক্ট
- কোডল্যাব: কাস্টম Workspace Studio স্টার্টার ও অ্যাকশন স্টেপ তৈরি করুন
- Codelab: Node.js ব্যবহার করে কাস্টম Workspace Studio স্টার্টার ও অ্যাকশন স্টেপ তৈরি করুন