इस गाइड में, Google Workspace Studio के लिए कस्टम संसाधन तय करने का तरीका बताया गया है.
कस्टम रिसॉर्स, कस्टम डेटा स्ट्रक्चर होते हैं. इन्हें एक साथ कई वैरिएबल को ग्रुप करने के लिए तय किया जा सकता है. जब किसी चरण के आउटपुट का स्ट्रक्चर स्टैटिक होता है, तो उसे कस्टम रिसॉर्स के तौर पर दिखाएं. उदाहरण के लिए, सीआरएम लीड बनाने के लिए, आपके आउटपुट में कई वैरिएबल होने चाहिए:
- ईमेल पता
- मोहल्ले का पता
- नाम
सीआरएम लीड बनाने के लिए ज़रूरी सभी डेटा मौजूद है या नहीं, यह पक्का करने के लिए, ईमेल पता, मोहल्ले का पता, और नाम वाली कस्टम रिसॉर्स का आउटपुट दें.
कस्टम संसाधन को रेफ़रंस के तौर पर आउटपुट करना
कस्टम रिसोर्स को रेफ़रंस के तौर पर आउटपुट करके, पूरे कस्टम रिसोर्स ऑब्जेक्ट के बजाय, उसके आईडी के हिसाब से कस्टम रिसोर्स को वापस लाया जा सकता है. अगर कोई कस्टम रिसॉर्स बड़ा या जटिल है, तो सिर्फ़ आईडी पास करने से परफ़ॉर्मेंस बेहतर होती है. ऐसा इसलिए होता है, क्योंकि इससे चरणों के बीच ट्रांसफ़र किए जाने वाले डेटा की मात्रा कम हो जाती है.
कस्टम संसाधन को रेफ़रंस के तौर पर आउटपुट करने के लिए, चरण की मेनिफ़ेस्ट फ़ाइल और कोड में बदलाव करें.
मेनिफ़ेस्ट फ़ाइल में बदलाव करना
मेनिफ़ेस्ट फ़ाइल में:
workflowResourceDefinitionsतय करें और उसेid,fields[]ऐरे, औरproviderFunctionअसाइन करें.workflowResourceDefinitionsएक ऐसा स्ट्रक्चर है जो कस्टम रिसॉर्स के डेटा टाइप और कॉन्टेंट के बारे में बताता है.fields[]ऐरे में, उन फ़ील्ड के बारे में बताया जाता है जिनसे कस्टम रिसॉर्स बनता है. इस उदाहरण में, इन्हेंfield_1औरfield_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": "onMessageResourceFunction" } ] }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": "Custom Resource (as reference)",
"logoUrl": "https://www.gstatic.com/images/icons/material/system/1x/pets_black_48dp.png",
"useLocaleFromApp": true
},
"flows": {
"workflowElements": [
{
"id": "getResourceDataReference",
"state": "ACTIVE",
"name": "Custom Resource (as reference)",
"description": "Output a custom resource as a reference",
"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"
}
]
}
}
}
कोड में बदलाव करें
ऐप्लिकेशन कोड में:
providerFunctionको लागू करें. इस उदाहरण में इसेonMessageResourceFunction()कहा गया है. यह ज़रूरत पड़ने पर कस्टम रिसोर्स का कॉन्टेंट वापस लाता है. यहeइनपुट लेता है, जो चरण का इवेंट ऑब्जेक्ट JSON पेलोड होता है. साथ ही, इससे कस्टम संसाधन आईडी सेट करता है.Apps Script
function onMessageResourceFunction(e) { console.log("Payload in onMessageResourceFunction: " + JSON.stringify(e)); var resource_id = e.workflow.resourceRetrieval.resourceReference.resourceId; let fieldValue_1; let fieldValue_2; // Using a if-condition to mock a database call. if (resource_id == "sample_resource_reference_id") { fieldValue_1 = AddOnsResponseService.newVariableData() .addStringValue("value1"); fieldValue_2 = AddOnsResponseService.newVariableData() .addStringValue("value2"); } else { fieldValue_1 = AddOnsResponseService.newVariableData() .addStringValue("field_1 value not found"); fieldValue_2 = AddOnsResponseService.newVariableData() .addStringValue("field_2 value not found"); } let resourceData = AddOnsResponseService.newResourceData() .addVariableData("field_1", fieldValue_1) .addVariableData("field_2", fieldValue_2) let workflowAction = AddOnsResponseService.newResourceRetrievedAction() .setResourceData(resourceData) let hostAppAction = AddOnsResponseService.newHostAppAction() .setWorkflowAction(workflowAction); return AddOnsResponseService.newRenderActionBuilder() .setHostAppAction(hostAppAction) .build(); }सेवा देने वाली कंपनी के फ़ंक्शन को कस्टम संसाधन की वैल्यू दिखानी होगी. इसके लिए, उसे सही तरीके से वैल्यू को वापस पाना होगा. जैसे, एपीआई को कॉल करना या डेटाबेस को पढ़ना.
आईडी के हिसाब से कस्टम संसाधन को वापस पाने और उसे वापस भेजने के लिए, उसे
returnOutputVariablesActionके तौर पर दिखाएं. जैसा किonExecuteResourceFunction()में दिखाया गया है.Apps Script
function onExecuteResourceFunction(e) { console.log("Payload in onExecuteResourceFunction: " + JSON.stringify(e)); let outputVariables = AddOnsResponseService.newVariableData() .addResourceReference("sample_resource_reference_id"); let workflowAction = AddOnsResponseService.newReturnOutputVariablesAction() .addVariableData("resource_data", outputVariables); let hostAppAction = AddOnsResponseService.newHostAppAction() .setWorkflowAction(workflowAction); return AddOnsResponseService.newRenderActionBuilder() .setHostAppAction(hostAppAction) .build(); }
यहां एक पूरा उदाहरण दिया गया है:
Apps Script
function onConfigResourceFunction() {
let section = CardService.newCardSection()
.addWidget(
CardService.newTextParagraph()
.setText("This is the Custom Resource Demo card")
);
const card = CardService.newCardBuilder()
.addSection(section)
.build();
return card;
}
function onMessageResourceFunction(e) {
console.log("Payload in onMessageResourceFunction: " + JSON.stringify(e));
var resource_id = e.workflow.resourceRetrieval.resourceReference.resourceId;
let fieldValue_1;
let fieldValue_2;
// Using a if-condition to mock a database call.
if (resource_id == "sample_resource_reference_id") {
fieldValue_1 = AddOnsResponseService.newVariableData()
.addStringValue("value1");
fieldValue_2 = AddOnsResponseService.newVariableData()
.addStringValue("value2");
} else {
fieldValue_1 = AddOnsResponseService.newVariableData()
.addStringValue("field_1 value not found");
fieldValue_2 = AddOnsResponseService.newVariableData()
.addStringValue("field_2 value not found");
}
let resourceData = AddOnsResponseService.newResourceData()
.addVariableData("field_1", fieldValue_1)
.addVariableData("field_2", fieldValue_2)
let workflowAction = AddOnsResponseService.newResourceRetrievedAction()
.setResourceData(resourceData)
let hostAppAction = AddOnsResponseService.newHostAppAction()
.setWorkflowAction(workflowAction);
return AddOnsResponseService.newRenderActionBuilder()
.setHostAppAction(hostAppAction)
.build();
}
function onExecuteResourceFunction(e) {
console.log("Payload in onExecuteResourceFunction: " + JSON.stringify(e));
let outputVariables = AddOnsResponseService.newVariableData()
.addResourceReference("sample_resource_reference_id");
let workflowAction = AddOnsResponseService.newReturnOutputVariablesAction()
.addVariableData("resource_data", outputVariables);
let hostAppAction = AddOnsResponseService.newHostAppAction()
.setWorkflowAction(workflowAction);
return AddOnsResponseService.newRenderActionBuilder()
.setHostAppAction(hostAppAction)
.build();
}
मिलते-जुलते विषय
- इनपुट वैरिएबल
- इनपुट वैरिएबल की पुष्टि करना
- आउटपुट वैरिएबल
- गतिविधि और गड़बड़ियों को लॉग करना
- Workspace Studio के इवेंट ऑब्जेक्ट