انتقال داده‌ها بین مراحل با یک متغیر خروجی

این راهنما نحوه ایجاد یک متغیر خروجی را توضیح می‌دهد.

متغیرهای خروجی به صورت مرحله‌ای برگردانده می‌شوند و می‌توانند به مرحله دیگری ارسال شوند. برای مثال، یک آدرس ایمیل را به مرحله دیگری ارسال کنید که از آن برای مشخص کردن گیرنده ایمیل استفاده می‌کند.

متغیر خروجی را در دو جا تعریف کنید: فایل مانیفست افزونه، و در کدی که دارای تابعی است که متغیر خروجی را برمی‌گرداند.

مثال زیر یک نتیجه ریاضی محاسبه شده را از سه متغیر ورودی برمی‌گرداند: دو عدد و یک عمل حسابی.

متغیر خروجی را در فایل مانیفست تعریف کنید

در فایل مانیفست Apps Script، یک آرایه outputs[] و یک onExecuteFunction() مشخص کنید.

هر آیتم در آرایه outputs[] دارای این ویژگی‌ها است:

  • id : شناسه منحصر به فرد برای یک متغیر خروجی.
  • description : توضیحی از متغیر خروجی که برای نمایش به کاربران نهایی ارائه می‌شود.
  • cardinality : چند مقدار مجاز است. مقادیر ممکن عبارتند از:
    • "SINGLE" : فقط یک مقدار مجاز است.
  • dataType : نوع مقادیر پذیرفته شده. dataType دارای ویژگی basicType است که نوع داده را تعریف می‌کند. مقادیر معتبر عبارتند از:
    • "STRING" : یک رشته الفبایی-عددی.
    • "INTEGER" : یک عدد.
    • "TIMESTAMP" : یک مهر زمانی در قالب ISO 8601. برای مثال، در ISO 8601، 15 مارس 2025 به صورت 2025-03-15 نمایش داده می‌شود.
    • "BOOLEAN" : یا درست است یا غلط.
    • "EMAIL_ADDRESS" : یک آدرس ایمیل با فرمت dana@example.com .

مثال زیر یک متغیر خروجی برای یک مرحله ماشین حساب تعریف می‌کند. متغیر خروجی یک عدد صحیح است.

جی‌سون

{
  "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"
          }
        }
      ]
    }
  }
}

متغیر خروجی را در کد تعریف کنید

کد این مرحله شامل تابعی به نام onExecuteCalculate() است که همان onExecuteFunction تعریف شده در مانیفست است. این تابع روی دو مقدار ورودی کاربر عملیات حسابی انجام می‌دهد و نتیجه را به عنوان یک متغیر خروجی با تابعی به نام outputVariables() برمی‌گرداند.

برای برگرداندن یک متغیر خروجی، JSON را با الزامات زیر برگردانید:

  • variableId هر متغیر خروجی باید id متغیر خروجی مربوطه در فایل مانیفست مطابقت داشته باشد.
  • variableData مربوط به متغیر خروجی باید با dataType و cardinality متغیر خروجی مربوطه در فایل manifest مطابقت داشته باشد.

مثال زیر یک متغیر خروجی را برمی‌گرداند که مقدار حسابی دو عدد ورودی است:

اسکریپت برنامه‌ها

/**
 * 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 onExecuteCalculateFunction(event) {
  console.log("output: " + JSON.stringify(event));
  var calculatedValue = 0;
  var value1 = event.workflow.actionInvocation.inputs["value1"];
  var value2 = event.workflow.actionInvocation.inputs["value2"];
  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;
  }
  var renderAction = {
    "hostAppAction" : {
      "workflowAction" : {
        "returnOutputVariablesAction" : {
          "variableValues" : [
            {
              "variableId": "result",
              "integerValues": [
                calculatedValue
              ]
            }
          ]
        }
      }
    }
  };

  console.log("renderAction: " + JSON.stringify(renderAction));

  return renderAction;
}