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

এই নির্দেশিকাটি ব্যাখ্যা করে যে কীভাবে এমন একটি ধাপ তৈরি করবেন যা ব্যবহারকারীরা Google Workspace Flows-এ একটি ফ্লোতে যোগ করতে পারবেন।

একটি ধাপ হলো একটি প্রবাহের কাজের ক্রমানুসারে একটি মাত্র ধাপ। ধাপগুলি একটি প্রবাহ শুরু করতে পারে না।

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

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

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

একটি ধাপ তৈরি করতে, অ্যাড-অনের ম্যানিফেস্ট ফাইলে এটি কনফিগার করুন, Google Workspace অ্যাড-অনের কোডে অ্যাপ্লিকেশন লজিক লিখুন এবং ধাপটি স্থাপন এবং পরীক্ষা করুন। আলফা চলাকালীন, এমন কোনও অ্যাড-অন প্রকাশ করবেন না যা Flows প্রসারিত করে।

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

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

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

ম্যানিফেস্ট ফাইলে, 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": "actionElement",
          "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 একটি RenderActions অবজেক্ট ফেরত দেয় যার মধ্যে একটি কার্ড থাকে। এই কার্ডটি 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 card also includes a "Save"
 * button to save the step configuration for the workflow.
 *
 * The input fields are configured to let the user select outputs from previous
 * workflow steps as input values using the `hostAppDataSource` property.
 */
function onConfigCalculate() {
  var card = {
    "sections": [
      {
        "header": "Step example: Calculate",
        "widgets": [
          {
            "textInput": {
              "name": "value1",
              "label": "First value",
              "hostAppDataSource" : {
                "workflowDataSource" : {
                  "includeVariables" : true
                }
              }
            }
          },
          {
            "selectionInput": {
              "name": "operation",
              "label": "Operation",
              "type": "DROPDOWN",
              "items": [
                {
                  "text": "+",
                  "value": "+",
                },
                {
                  "text": "-",
                  "value": "-",
                },
                {
                  "text": "x",
                  "value": "x",
                },
                {
                  "text": "/",
                  "value": "/",
                }
              ]
            }
          },
          {
            "textInput": {
              "name": "value2",
              "label": "Second value",
              "hostAppDataSource" : {
                "workflowDataSource" : {
                  "includeVariables" : true
                }
              }
            }
          }
        ]
      }
    ]
  };
  return {
    "action": {
      "navigations": [{
        "push_card": 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(variableValues) {
  var renderAction =  {
    "hostAppAction" : {
      "workflowAction" : {
        "returnOutputVariablesAction" : {
          "variables" : variableValues
        }
      }
    }
  };
  console.log("renderAction: " + JSON.stringify(renderAction));
  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;
  }
  return outputVariables([{
    "variableId": "result",
    "variableData": {
        "integerValues": [
          calculatedValue
        ]
      },
  }]);
}

তোমার ধাপ পরীক্ষা করো

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

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

    1. অ্যাপস স্ক্রিপ্ট এডিটরে স্ক্রিপ্ট প্রজেক্টটি খুলুন।
    2. স্থাপন > পরীক্ষা স্থাপন ক্লিক করুন।
    3. ইনস্টল করুন এ ক্লিক করুন।
    4. নিচে, সম্পন্ন ক্লিক করুন।

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

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

    পরীক্ষামূলক স্থাপনা সম্পর্কে আরও জানতে, একটি অপ্রকাশিত অ্যাড-অন ইনস্টল করুন দেখুন।

  2. খোলা প্রবাহ।

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

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

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