Çoğu eklenti, veri sunmaya ek olarak kullanıcının bilgi girmesini de gerektirir. Kart tabanlı bir eklenti derlediğinizde, kullanıcıdan eklentinizin ihtiyaç duyduğu verileri istemek veya başka etkileşim kontrolleri sağlamak için düğmeler, araç çubuğu menü öğeleri veya onay kutuları gibi etkileşimli widget'ları kullanabilirsiniz.
Widget'lara işlem ekleme
Çoğunlukla, widget'ları belirli işlemlere bağlayarak ve gerekli davranışı bir geri çağırma işlevinde uygulayarak etkileşimli hale getirirsiniz. Ayrıntılı bilgi için eklenti işlemleri bölümünü inceleyin.
Çoğu durumda, bir widget'ı seçildiğinde veya güncellendiğinde belirli bir işlem gerçekleştirecek şekilde yapılandırmak için şu genel prosedürü uygulayabilirsiniz:
- Yürütülmesi gereken geri çağırma işlevini ve gerekli parametreleri belirten bir
Action
nesnesi oluşturun. - Uygun widget işleyici işlevini çağırarak widget'ı
Action
öğesine bağlayın. - Gerekli davranışı uygulamak için geri çağırma işlevini uygulayın.
Örnek
Aşağıdaki örnekte, tıklandıktan sonra bir kullanıcı bildirimi görüntüleyen bir düğme ayarlanmaktadır. Bu tıklama, bildirim metnini belirten bir bağımsız değişkenle notifyUser()
geri çağırma işlevini tetikler. Yerleşik bir ActionResponse
öğesinin döndürülmesi durumunda görüntülenen bir bildirim gösterilir.
/**
* 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!
}
Etkili etkileşimler tasarlayın
Etkileşimli kartlar tasarlarken aşağıdakileri göz önünde bulundurun:
Etkileşimli widget'lar, davranışlarını tanımlamak için genellikle en az bir işleyici yöntemine ihtiyaç duyar.
URL'niz varsa ve URL'yi bir sekmede açmak istiyorsanız
setOpenLink()
widget işleyici işlevini kullanın. Bu sayedeAction
nesnesi ve geri çağırma işlevi tanımlama ihtiyacı ortadan kalkar. Önce URL'yi oluşturmanız veya URL'yi açmadan önce başka adımlar gerçekleştirmeniz gerekiyorsa birAction
tanımlayın ve bunun yerinesetOnClickOpenLinkAction()
kullanın.setOpenLink()
veyasetOnClickOpenLinkAction()
widget işleyici işlevlerini kullanırken hangi URL'nin açılacağını tanımlamak için birOpenLink
nesnesi sağlamanız gerekir. Bu nesneyiOpenAs
veOnClose
enum'larını kullanarak açma ve kapatma davranışını belirtmek için de kullanabilirsiniz.Birden fazla widget'ın aynı
Action
nesnesini kullanması mümkündür. Ancak geri çağırma işlevine farklı parametreler sağlamak istiyorsanız farklıAction
nesneleri tanımlamanız gerekir.Geri çağırma işlevlerinizi basit tutun. Kart hizmeti, eklentilerin çalışır durumda kalmasını sağlamak için geri çağırma işlevlerini maksimum 30 saniye yürütme süresiyle sınırlar. Yürütme işlemi bundan daha uzun sürerse eklentinizin kullanıcı arayüzü,
Action
komutuna yanıt olarak kart ekranını düzgün güncellemeyebilir .Üçüncü taraf arka ucundaki veri durumu, eklentinizin kullanıcı arayüzüyle kullanıcı etkileşimi sonucunda değişirse mevcut istemci tarafı önbelleğinin temizlenmesi için eklentinin "durum değişti" bitini
true
olarak ayarlaması önerilir. Ek ayrıntılar içinActionResponseBuilder.setStateChanged()
yöntem açıklamasına bakın.