कस्टम संसाधन की मदद से जटिल डेटा दिखाना

इस गाइड में, Google Workspace Flows के लिए कस्टम संसाधन तय करने का तरीका बताया गया है.

कस्टम रिसॉर्स, कस्टम डेटा स्ट्रक्चर होते हैं. इन्हें एक साथ कई वैरिएबल को ग्रुप करने के लिए तय किया जा सकता है. उदाहरण के लिए, सीआरएम लीड बनाने के लिए, ईमेल पता, मोहल्ले का पता, और नाम वाला कस्टम रिसॉर्स पास करें.

कस्टम संसाधन तय करने के ये दो तरीके हैं:

  • रेफ़रंस के तौर पर: कस्टम रिसोर्स को रेफ़रंस के तौर पर आउटपुट करने पर, पूरे कस्टम रिसोर्स ऑब्जेक्ट के बजाय, कस्टम रिसोर्स को उसके आईडी से दिखाया जाता है. इससे परफ़ॉर्मेंस बेहतर होती है, क्योंकि फ़्लो के चरणों के बीच ट्रांसफ़र किए गए डेटा को कम किया जाता है. जब डेटा के लिए सेकंडरी लुकअप की ज़रूरत होती है, तो उसका आईडी वापस पाने से उन लुकअप को पूरा करने में मदद मिलती है.
  • वैल्यू के तौर पर: इस तरीके का इस्तेमाल तब करें, जब डेटा को एक्ज़ीक्यूशन के दौरान वापस पाना हो या जब कस्टम रिसोर्स छोटा हो और उसमें संवेदनशील डेटा न हो.

कस्टम संसाधन को रेफ़रंस के तौर पर आउटपुट करना

कस्टम रिसोर्स को रेफ़रंस के तौर पर आउटपुट करके, पूरे कस्टम रिसोर्स ऑब्जेक्ट के बजाय उसके आईडी से कस्टम रिसोर्स को वापस लाया जा सकता है. अगर कोई कस्टम रिसॉर्स बड़ा या जटिल है, तो सिर्फ़ आईडी पास करने से परफ़ॉर्मेंस बेहतर होती है. ऐसा इसलिए होता है, क्योंकि इससे फ़्लो के चरणों के बीच ट्रांसफ़र किए गए डेटा की मात्रा कम हो जाती है.

कस्टम रिसोर्स को रेफ़रंस के तौर पर आउटपुट करने के लिए, चरण की मेनिफ़ेस्ट फ़ाइल और कोड में बदलाव करें.

मेनिफ़ेस्ट फ़ाइल में बदलाव करना

मेनिफ़ेस्ट फ़ाइल में:

  1. workflowResourceDefinitions तय करें और उसे id, fields[] ऐरे, और providerFunction असाइन करें. workflowResourceDefinitions एक ऐसा स्ट्रक्चर है जो कस्टम रिसोर्स के डेटा टाइप और कॉन्टेंट के बारे में बताता है.

  2. fields[] ऐरे में, उन फ़ील्ड के बारे में बताया जाता है जिनसे कस्टम रिसॉर्स बनता है. इस उदाहरण में, इन्हें field_1 और field_2 कहा जाता है.

  3. providerFunction की वैल्यू, चरण के कोड में मौजूद किसी फ़ंक्शन के नाम से मेल खानी चाहिए. providerFunction, ज़रूरत पड़ने पर कस्टम संसाधन का असली कॉन्टेंट वापस पाता है.

    JSON

    {
        "workflowResourceDefinitions": [
            {
                "id": "resource_id",
                "name": "Custom Resource",
                "fields": [
                    {
                        "selector": "field_1",
                        "name": "Field 1",
                        "dataType": {
                            "basicType": "STRING"
                        }
                    },
                    {
                        "selector": "field_2",
                        "name": "Field 2",
                        "dataType": {
                            "basicType": "STRING"
                        }
                    }
                ],
                "providerFunction": "onMessageResourceFunction"
            }
        ]
    }
    
  4. outputs[] में, ऐसा आउटपुट वैरिएबल तय करें जो आउटपुट वैरिएबल का डाइनैमिक सेट दिखाता हो. आउटपुट वैरिएबल में, resourceType प्रॉपर्टी वाला dataType होता है. cardinality की वैल्यू SINGLE होनी चाहिए.

    JSON

    "outputs": [{
            "id": "resource_data",
            "description": "Resource Data",
            "cardinality": "SINGLE",
            "dataType": {
              "resourceType": { "workflowResourceDefinitionId": "resource_id" }
            }
          }]
    

यहां कस्टम रिसॉर्स को तय करने वाली पूरी मेनिफ़ेस्ट फ़ाइल दी गई है:

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": "getResourceData",
                    "state": "ACTIVE",
                    "name": "Get Resource by ID",
                    "description": "Get Resource by ID",
                    "workflowAction": {
                        "outputs": [
                            {
                                "id": "resource_data",
                                "description": "Resource Data",
                                "cardinality": "SINGLE",
                                "dataType": {
                                    "resourceType": {
                                        "workflowResourceDefinitionId": "resource_id"
                                    }
                                }
                            }
                        ],
                        "onConfigFunction": "onConfigResourceFunction",
                        "onExecuteFunction": "onExecuteResourceFunction"
                    }
                }
            ],
            "workflowResourceDefinitions": [
                {
                    "id": "resource_id",
                    "name": "Custom Resource",
                    "fields": [
                        {
                            "selector": "field_1",
                            "name": "Field 1",
                            "dataType": {
                                "basicType": "STRING"
                            }
                        },
                        {
                            "selector": "field_2",
                            "name": "Field 2",
                            "dataType": {
                                "basicType": "STRING"
                            }
                        }
                    ],
                    "providerFunction": "onMessageResourceFunction"
                }
            ]
        }
    }
}

कोड में बदलाव करें

ऐप्लिकेशन कोड में:

  1. providerFunction को लागू करें. इस उदाहरण में इसे onMessageResourceFunction() कहा गया है. यह ज़रूरत पड़ने पर कस्टम संसाधन का कॉन्टेंट वापस लाता है. यह e इनपुट लेता है, जो चरण का इवेंट ऑब्जेक्ट JSON पेलोड होता है. साथ ही, इससे कस्टम संसाधन आईडी सेट करता है.

    Apps Script

    function onMessageResourceFunction(e) {
      var resource_id = e.workflow.resourceRetrieval.resourceReference.resourceId;
      var field_1 = ...;
      var field_2 = ...;
    
      return {
        "hostAppAction": {
          "workflowAction": {
            "resourceRetrievedAction": {
              "resourceJson": JSON.stringify({
                "field_1": field_1,
                "field_2": field_2,
              })
            }
          }
        }
      };
    }
    
  2. प्रोवाइडर फ़ंक्शन को कस्टम संसाधन की वैल्यू दिखानी होगी. इसके लिए, उसे सही तरीके से वैल्यू को वापस लाना होगा. जैसे, एपीआई को कॉल करना या डेटाबेस को पढ़ना.

  3. आईडी के हिसाब से कस्टम संसाधन को वापस पाने और उसे वापस भेजने के लिए, उसे returnOutputVariablesAction के तौर पर दिखाएं. जैसा कि onExecuteResourceFunction() में दिखाया गया है.

    Apps Script

    function onExecuteResourceFunction(e) {
      var resource_id = e.workflow.resourceRetrieval.resourceReference.resourceId;
      return {
        "hostAppAction": {
          "workflowAction": {
            "returnOutputVariablesAction": {
              "variableValues": [{
                "variableId": "resource_data",
                "variableData": {
                  "resourceReferences" : [ resource_id ]
                }
              }]
            }
          }
        }
      };
    }
    

यहां एक पूरा उदाहरण दिया गया है:

Apps Script

function onMessageResourceFunction(e) {
  var resource_id = e.workflow.resourceRetrieval.resourceReference.resourceId;
  var field_1 = ...;
  var field_2 = ...;

  return {
    "hostAppAction": {
      "workflowAction": {
        "resourceRetrievedAction": {
          "resourceJson": JSON.stringify({
            "field_1": field_1,
            "field_2": field_2,
          })
        }
      }
    }
  };
}

function onExecuteResourceFunction(e) {
  var resource_id = e.workflow.resourceRetrieval.resourceReference.resourceId;
  return {
    "hostAppAction": {
      "workflowAction": {
        "returnOutputVariablesAction": {
          "variableValues": [{
            "variableId": "resource_data",
            "variableData": {
              "resourceReferences" : [ resource_id ]
            }
          }]
        }
      }
    }
  };
}

कस्टम संसाधन को वैल्यू के तौर पर आउटपुट करना

कस्टम रिसोर्स को रेफ़रंस के तौर पर आउटपुट करते समय, पूरे कस्टम रिसोर्स ऑब्जेक्ट के बजाय, आईडी के हिसाब से कस्टम रिसोर्स को वापस लाया जाता है. अगर आपको पूरा रिसॉर्स ऑब्जेक्ट पास करना है, तो resourceValues का इस्तेमाल करें.

resourceValues में, किसी चरण के आउटपुट को तय किया जाता है.

किसी कस्टम रिसोर्स को वैल्यू के तौर पर आउटपुट करने के लिए, चरण की मेनिफ़ेस्ट फ़ाइल और कोड में बदलाव करें.

मेनिफ़ेस्ट फ़ाइल में बदलाव करना

मेनिफ़ेस्ट फ़ाइल में:

  1. workflowResourceDefinitions तय करें और उसे आईडी असाइन करें.workflowResourceDefinitions एक ऐसा स्ट्रक्चर है जो कस्टम संसाधन के डेटा टाइप और कॉन्टेंट के बारे में बताता है. workflowResourceDefinitions में, उन फ़ील्ड के बारे में बताया जाता है जिनसे कस्टम संसाधन बनता है. इस उदाहरण में, इन्हें field_1 और field_2 कहा जाता है.

  2. एक providerFunction तय करें. इसकी वैल्यू, चरण के कोड में मौजूद किसी फ़ंक्शन का नाम होना चाहिए. providerFunction, ज़रूरत पड़ने पर कस्टम संसाधन का असली कॉन्टेंट वापस पाता है.

    JSON

    {
        "workflowResourceDefinitions": [
            {
                "id": "resource_id",
                "name": "Custom Resource",
                "fields": [
                    {
                        "selector": "field_1",
                        "name": "Field 1",
                        "dataType": {
                            "basicType": "STRING"
                        }
                    },
                    {
                        "selector": "field_2",
                        "name": "Field 2",
                        "dataType": {
                            "basicType": "STRING"
                        }
                    }
                ],
                "providerFunction": "onExecuteResourceAsValuesFunction"
            }
        ]
    }
    
  3. outputs[] में, ऐसा आउटपुट वैरिएबल तय करें जो resourceValues दिखाता हो. cardinality की वैल्यू SINGLE होनी चाहिए.

    JSON

    {
        "outputs": [
            {
                "id": "resource_data",
                "description": "Resource Data",
                "cardinality": "SINGLE",
                "dataType": {
                    "resourceValues": {
                        "value1": "value one"
                    }
                }
            }
        ]
    }
    

यहां पूरी मेनिफ़ेस्ट फ़ाइल दी गई है, जिसमें कस्टम रिसॉर्स के बारे में बताया गया है:

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": "getResourceData",
                    "state": "ACTIVE",
                    "name": "Get Resource by ID",
                    "description": "Get Resource by ID",
                    "workflowAction": {
                        "outputs": [
                            {
                                "id": "resource_data",
                                "description": "Resource Data",
                                "cardinality": "SINGLE",
                                "dataType": {
                                    "resourceValues": {
                                        "value1": "value one"
                                    }
                                }
                            }
                        ],
                        "onConfigFunction": "onConfigResourceFunction",
                        "onExecuteFunction": "onExecuteResourceFunction"
                    }
                }
            ],
            "workflowResourceDefinitions": [
                {
                    "id": "resource_id",
                    "name": "Custom Resource",
                    "fields": [
                        {
                            "selector": "field_1",
                            "name": "Field 1",
                            "dataType": {
                                "basicType": "STRING"
                            }
                        },
                        {
                            "selector": "field_2",
                            "name": "Field 2",
                            "dataType": {
                                "basicType": "STRING"
                            }
                        }
                    ],
                    "providerFunction": "onExecuteResourceAsValuesFunction"
                }
            ]
        }
    }
}

कोड में बदलाव करें

ऐप्लिकेशन कोड में, providerFunction लागू करें. इस उदाहरण में इसे onExecuteResourceAsValuesFunction() कहा गया है. यह कस्टम रिसॉर्स को JSON के तौर पर तय करता है और उसे दिखाता है. यहां इसे resourceJSON के तौर पर दिखाया गया है:

Apps Script

function onExecuteResourceAsValuesFunction() {
  var field_1 = "value 1";
  var field_2 = "value 2";
  var resourceJSON = JSON.stringify({
    "field_1": field_1,
    "field_2": field_2,
  });
  return {
    "hostAppAction": {
      "workflowAction": {
        "returnOutputVariablesAction": {
          "variableValues": [{
            "variableId": "resource_data",
            "variableData": {
              "resourceValues" : [ resourceJSON ]
            }
          }]
        }
      }
    }
  };
}