ज़्यादातर ऐड-ऑन, डेटा दिखाने के साथ-साथ उपयोगकर्ता से जानकारी भी मांगते हैं. कार्ड पर आधारित ऐड-ऑन बनाते समय, इंटरैक्टिव विजेट का इस्तेमाल किया जा सकता है. जैसे, बटन, टूलबार मेन्यू आइटम या चेकबॉक्स. इनकी मदद से, उपयोगकर्ता से वह डेटा मांगा जा सकता है जिसकी आपके ऐड-ऑन को ज़रूरत है. इसके अलावा, इंटरैक्शन कंट्रोल भी दिए जा सकते हैं.
विजेट में कार्रवाइयां जोड़ना
ज़्यादातर मामलों में, विजेट को इंटरैक्टिव बनाने के लिए उन्हें खास कार्रवाइयों से लिंक किया जाता है. साथ ही, कॉलबैक फ़ंक्शन में ज़रूरी व्यवहार लागू किया जाता है. ज़्यादा जानकारी के लिए, ऐड-ऑन कार्रवाइयां देखें.
ज़्यादातर मामलों में, किसी विजेट को कॉन्फ़िगर करने के लिए इस सामान्य तरीके का इस्तेमाल किया जा सकता है. इससे, विजेट को चुनने या अपडेट करने पर कोई खास कार्रवाई की जा सकती है:
Actionऑब्जेक्ट बनाएं. इसमें ज़रूरी पैरामीटर के साथ-साथ, उस कॉलबैक फ़ंक्शन के बारे में जानकारी दें जिसे लागू किया जाना है.- सही विजेट हैंडलर फ़ंक्शन को कॉल करके, विजेट को
Actionसे लिंक करें. - ज़रूरी व्यवहार को लागू करने के लिए, कॉलबैक फ़ंक्शन लागू करें.
उदाहरण
यहां दिए गए उदाहरण में, एक ऐसा बटन सेट किया गया है जिस पर क्लिक करने के बाद, उपयोगकर्ता को सूचना दिखती है. क्लिक करने पर, notifyUser() कॉलबैक फ़ंक्शन ट्रिगर होता है. इसमें एक ऐसा आर्ग्युमेंट होता है जो सूचना के टेक्स्ट के बारे में बताता है. बनाया गया ActionResponse वापस करने पर, सूचना दिखती है.
/**
* Build a simple card with a button that sends a notification.
* @return {Card}
*/
function buildSimpleCard() {
var buttonAction = CardService.newAction()
.setFunctionName('notifyUser')
.setParameters({'notifyText': 'Button clicked!'});
var button = CardService.newTextButton()
.setText('Notify')
.setOnClickAction(buttonAction);
// ...continue creating widgets, then create a Card object
// to add them to. Return the built Card object.
}
/**
* Callback function for a button action. Constructs a
* notification action response and returns it.
* @param {Object} e the action event object
* @return {ActionResponse}
*/
function notifyUser(e) {
var parameters = e.parameters;
var notificationText = parameters['notifyText'];
return CardService.newActionResponseBuilder()
.setNotification(CardService.newNotification()
.setText(notificationText))
.build(); // Don't forget to build the response!
}
असरदार इंटरैक्शन डिज़ाइन करना
इंटरैक्टिव कार्ड डिज़ाइन करते समय, इन बातों का ध्यान रखें:
आम तौर पर, इंटरैक्टिव विजेट को अपने व्यवहार को तय करने के लिए, कम से कम एक हैंडलर तरीके की ज़रूरत होती है.
जब आपके पास कोई यूआरएल हो और आपको उसे सिर्फ़ किसी टैब में खोलना हो, तब
setOpenLink()विजेट हैंडलर फ़ंक्शन का इस्तेमाल करें. इससेActionऑब्जेक्ट और कॉलबैक फ़ंक्शन को तय करने की ज़रूरत नहीं पड़ती. अगर आपको यूआरएल खोलने से पहले उसे बनाना है या कोई अन्य कार्रवाई करनी है, तोActionको तय करें औरsetOnClickOpenLinkAction()का इस्तेमाल करें.setOpenLink()याsetOnClickOpenLinkAction()विजेट हैंडलर फ़ंक्शन का इस्तेमाल करते समय, आपकोOpenLinkऑब्जेक्ट देना होगा. इससे यह तय किया जा सकेगा कि कौनसा यूआरएल खोलना है. इस ऑब्जेक्ट का इस्तेमाल करके,OpenAsऔरOnCloseenum का इस्तेमाल करके, खुलने और बंद होने के व्यवहार के बारे में भी बताया जा सकता है.ऐसा हो सकता है कि एक से ज़्यादा विजेट, एक ही
Actionऑब्जेक्ट का इस्तेमाल करें. हालांकि, अगर आपको कॉलबैक फ़ंक्शन को अलग-अलग पैरामीटर देने हैं, तो आपको अलग-अलगActionऑब्जेक्ट तय करने होंगे.अपने कॉलबैक फ़ंक्शन को आसान रखें. ऐड-ऑन को रिस्पॉन्सिव बनाए रखने के लिए, कार्ड सेवा, कॉलबैक फ़ंक्शन के लिए ज़्यादा से ज़्यादा 30 सेकंड का समय तय करती है. अगर इस प्रोसेस में इससे ज़्यादा समय लगता है, तो हो सकता है कि ऐड-ऑन का यूज़र इंटरफ़ेस (यूआई),
Actionके जवाब में अपने कार्ड को ठीक से डिसप्ले न कर पाए .अगर उपयोगकर्ता के ऐड-ऑन के यूज़र इंटरफ़ेस (यूआई) से इंटरैक्ट करने की वजह से, तीसरे पक्ष के बैकएंड पर डेटा की स्थिति में बदलाव होता है, तो हमारा सुझाव है कि ऐड-ऑन,
trueके लिए 'state changed' बिट सेट करे. इससे क्लाइंट-साइड की मौजूदा कैश मेमोरी मिट जाएगी. ज़्यादा जानकारी के लिए,ActionResponseBuilder.setStateChanged()तरीके का ब्यौरा देखें.