একটি ধাপ তৈরি করুন

এই নির্দেশিকায় ব্যাখ্যা করা হয়েছে কীভাবে গুগল ওয়ার্কস্পেস স্টুডিওতে একটি ফ্লো-তে ব্যবহারকারীদের যোগ করার মতো একটি স্টেপ তৈরি করতে হয়।

একটি ধাপ হলো কোনো ফ্লো-এর কাজগুলোর অনুক্রমের একটি একক পদক্ষেপ। ধাপগুলো কোনো ফ্লো শুরু করতে পারে না।

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

একজন ব্যবহারকারী একটি ফ্লো-এর অংশ হিসেবে ক্যালকুলেটর ধাপটি কনফিগার করেন।

চিত্র ১: একজন ব্যবহারকারী একটি ফ্লো-এর অংশ হিসেবে ক্যালকুলেটর ধাপটি কনফিগার করছেন।

একটি স্টেপ তৈরি করতে, অ্যাড-অনটির ম্যানিফেস্ট ফাইলে এটি কনফিগার করুন, গুগল ওয়ার্কস্পেস অ্যাড-অনটির কোডে অ্যাপ্লিকেশন লজিক লিখুন এবং স্টেপটি ডেপ্লয় ও টেস্ট করুন।

ধাপটি সংজ্ঞায়িত করুন

কোনো ধাপ কনফিগার করতে, ম্যানিফেস্ট ফাইলে সেটিকে সংজ্ঞায়িত করুন এবং কোডে এর অ্যাপ্লিকেশন লজিক লিখুন।

ম্যানিফেস্ট ফাইলে ধাপটি সংজ্ঞায়িত করুন।

ম্যানিফেস্ট ফাইলে, appsscript.json :

  1. অ্যাড-অনের কোডে সংশ্লিষ্ট ফাংশনগুলোর নামে onConfigFunction এবং onExecuteFunction সেট করুন। এই উদাহরণে, ফাংশনগুলোর নাম হলো onConfigCalculate() এবং onExecuteCalculate()
    • onConfigFunction ধাপটি সেট আপ এবং কনফিগার করে। প্রয়োজনে, ধাপটি কার্যকর করার জন্য ব্যবহারকারীদের কাছ থেকে প্রয়োজনীয় ডেটা সংগ্রহ করে, যেমন ইমেল পাঠানোর ঠিকানা। এই গাইডের উদাহরণে, আমরা দুটি মান এবং একটি গাণিতিক অপারেশনের জন্য অনুরোধ করছি।
    • onExecuteFunction ধাপটি সম্পাদন করে। যদি ব্যবহারকারীদের কাছ থেকে ডেটা সংগ্রহ করা হয়ে থাকে, তবে সেই ডেটা এই ফাংশনে পাঠানো হয়। প্রযোজ্য ক্ষেত্রে, এটি একটি আউটপুট প্রদান করে। এই নির্দেশিকার উদাহরণে, এটি একটি গাণিতিক গণনার ফলাফল আউটপুট করে।
  2. প্রয়োজনীয় ইনপুট এবং আউটপুট সেট করুন, যা পরবর্তী ধাপকে ডেটা সংগ্রহ করে পরবর্তী ধাপে পাঠাতে সাহায্য করে। এই উদাহরণে, ব্যবহারকারীর কাছ 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
    },
    "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"
          }
        }
      ]
    }
  }
}

এরপরে, কোডে ধাপটি সংজ্ঞায়িত করে সহায়ক কোডটি লিখুন।

কোডে ধাপটি সংজ্ঞায়িত করুন

অ্যাপ্লিকেশন কোডে নিম্নলিখিত কাজগুলো করুন:

  1. onConfigFunction টি লিখুন, এই উদাহরণে যার নাম দেওয়া হয়েছে onConfigCalculate() । যখন ব্যবহারকারীরা কোনো ফ্লো-তে স্টেপ যোগ করেন, তখন তাঁরা ফ্লো বিল্ডারে স্টেপটির বিভিন্ন দিক কনফিগার করতে পারেন। ব্যবহারকারীর কাছ থেকে প্রয়োজনীয় তথ্য সংগ্রহ করার জন্য, onConfigFunction টি একটি কনফিগারেশন কার্ড নির্ধারণ করে।

    অ্যাড-অন-এর ইউজার ইন্টারফেসের মূল ভিত্তি হলো কার্ড। কার্ড একটি নির্দিষ্ট লেআউট, বাটন-এর মতো ইন্টারেক্টিভ UI এলিমেন্ট এবং ছবির মতো রিচ মিডিয়া সমর্থন করে। কোনো ধাপ চালানোর জন্য ব্যবহারকারীর কাছ থেকে প্রয়োজনীয় ডেটা, যেমন ইমেল পাঠানোর জন্য ইমেল অ্যাড্রেস, কার্ডের মাধ্যমেই সংগ্রহ করা যায়।

    OnConfigFunction একটি কার্ড রিটার্ন করে। এই কার্ডটি সেই UI নির্ধারণ করে, যেখানে ব্যবহারকারীরা ধাপটির ডেটা সেট করেন। এই উদাহরণে, onConfigFunction এমন একটি কার্ড তৈরি করে যা ব্যবহারকারীর কাছে দুটি মান এবং একটি গাণিতিক অপারেশন জানতে চায়।

  2. এই উদাহরণে onExecuteCalculate() নামের onExecuteFunction টি লিখুন। যখন আপনার স্টেপটি একটি ফ্লো-তে রান করে, তখন OnExecuteFunction টি চলে। onConfigurationFunction এ সংজ্ঞায়িত কনফিগারেশনের সময় ব্যবহারকারী যে ইনপুট ভ্যালুগুলো সেট করেন, সেগুলো OnExecuteFunction এ পাঠানো হয়।

    OnExecuteFunction() এমনভাবে লিখুন যাতে এটি প্রদত্ত ইনপুটগুলো ব্যবহার করে সিনক্রোনাসভাবে তার কাজটি সম্পাদন করে। মনে রাখবেন, OnExecuteFunction() কে অবশ্যই আপনার ফ্লো-এর ম্যানিফেস্টে সংজ্ঞায়িত সমস্ত আউটপুট রিটার্ন করতে হবে, অন্যথায় একটি ত্রুটি ঘটবে।

এই কোড স্যাম্পলটিতে outputVariables() নামে একটি সহায়ক ফাংশন রয়েছে, যা ধাপটি থেকে আউটপুট হিসাবে প্রদত্ত ভেরিয়েবলগুলো তৈরি করে এবং পাঠায়।

আপনার ধাপটি পরীক্ষার জন্য প্রস্তুত।

ক্যালকুলেটর ধাপের কোডটি নিচে দেওয়া হলো:

অ্যাপস স্ক্রিপ্ট

/**
 * 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);
}

আপনার পদক্ষেপ পরীক্ষা করুন

আপনার স্টেপটি পরীক্ষা করার জন্য, আপনার অ্যাড-অনটির জন্য একটি টেস্ট ডেপ্লয়মেন্ট সেট আপ করুন, স্টেপটি একটি ফ্লো-তে যোগ করুন এবং তারপর ফ্লো-টি চালান।

  1. আপনার অ্যাড-অনের জন্য একটি টেস্ট ডেপ্লয়মেন্ট সেট আপ করুন:

    1. অ্যাপস স্ক্রিপ্ট এডিটরে স্ক্রিপ্ট প্রজেক্টটি খুলুন।
    2. Deploy > Test deployments-এ ক্লিক করুন।
    3. ইনস্টল-এ ক্লিক করুন।
    4. নিচে, 'Done'-এ ক্লিক করুন।

    আপনি অ্যাপস স্ক্রিপ্ট প্রজেক্টটি অন্য ব্যবহারকারীদের অ্যাকাউন্টের সাথে শেয়ার করে অ্যাড-অনটি পরীক্ষা করতে দিতে পারেন (সম্পাদনার অ্যাক্সেস প্রয়োজন)। তারপর ব্যবহারকারীদের পূর্ববর্তী ধাপগুলো অনুসরণ করতে বলুন।

    একবার ইনস্টল হয়ে গেলে, অ্যাড-অনটি ফ্লোস-এ অবিলম্বে উপলব্ধ হয়। অ্যাড-অনটি প্রদর্শিত হওয়ার আগে আপনাকে ফ্লোস রিফ্রেশ করতে হতে পারে। এটি ব্যবহার করার আগে আপনাকে অবশ্যই অ্যাড-অনটির অনুমোদন দিতে হবে।

    টেস্ট ডেপ্লয়মেন্ট সম্পর্কে আরও জানতে, “Install an unpublished add-on” দেখুন।

  2. উন্মুক্ত প্রবাহ।

  3. এমন একটি প্রবাহ তৈরি করুন যাতে আপনার ধাপটি অন্তর্ভুক্ত থাকে:

    1. নতুন ফ্লো -এ ক্লিক করুন।
    2. প্রবাহটি কীভাবে শুরু হবে তা নির্বাচন করুন। কোনো ধাপ পরীক্ষা করার সময়, এমন একটি সূচনা বেছে নেওয়া ভালো যা আপনি নিজেই শুরু করতে পারেন, যেমন নিজেকে একটি ইমেল পাঠানো। যদি আপনার ধাপে একটি ইনপুট ভেরিয়েবলের প্রয়োজন হয়, তবে সূচনাটির আউটপুটের অংশ হিসাবে ইনপুট ভেরিয়েবলটি কনফিগার করুন।
    3. স্টেপ'- এ ক্লিক করুন। আপনার তৈরি বা আপডেট করা 'ক্যালকুলেট' নামের ধাপটি নির্বাচন করুন।
    4. আপনার ধাপটি কনফিগার করুন। গণনার ধাপটির জন্য, দুটি মান এবং একটি গাণিতিক প্রক্রিয়া বেছে নিন। ধাপটি স্বয়ংক্রিয়ভাবে সংরক্ষিত হয়ে যাবে।
    5. আপনার স্টেপের আউটপুট পরীক্ষা করতে, আরেকটি স্টেপ যোগ করুন। উদাহরণস্বরূপ, একটি ইমেল মেসেজে আউটপুট যোগ করতে, আপনি জিমেইলের ' সেন্ড এ মেসেজ' স্টেপটি যোগ করতে পারেন। 'মেসেজ'- এ, ভ্যারিয়েবলস' -এ ক্লিক করুন এবং আপনার স্টেপের আউটপুট নির্বাচন করুন। ক্যালকুলেট স্টেপের জন্য, ভ্যারিয়েবলস' > 'স্টেপ ২: ক্যালকুলেটেড রেজাল্ট' > 'ক্যালকুলেটেড রেজাল্ট ' নির্বাচন করুন। ভ্যারিয়েবলটি ' মেসেজ' ফিল্ডে একটি চিপ হিসাবে প্রদর্শিত হবে।
    6. 'চালু করুন'- এ ক্লিক করুন। আপনার ফ্লোটি চলার জন্য প্রস্তুত।
  4. আপনার ফ্লো-এর স্টার্টার চালু করে ফ্লো-টি চালান। উদাহরণস্বরূপ, যদি আপনার ফ্লো ইমেল পেলে শুরু হয়, তাহলে নিজেকে একটি ইমেল পাঠান।

  5. ফ্লোটি প্রত্যাশা অনুযায়ী চলছে কিনা তা যাচাই করুন। ফ্লো বিল্ডারের অ্যাক্টিভিটি ট্যাবে গিয়ে লগগুলো দেখুন। অ্যাক্টিভিটি ট্যাবে কীভাবে কাস্টম লগ তৈরি করতে হয় তা জানতে, অ্যাক্টিভিটি লগস দেখুন।