如何在Google Workspace插件的卡片中添加toast通知提示?
解决方法
错误原因
你三次尝试报错的核心原因是混淆了Google Workspace附加组件的两个核心对象的使用场景:
- Notification(toast通知)不属于静态卡片的组成部分,不能直接绑定到
CardBuilder创建的卡片实例上 - 通知是用户触发交互后,操作响应的返回内容,只能封装在
ActionResponse或者UniversalActionResponse中返回
此外你调用addCardAction报错的原因是:该方法接收的是CardAction实例(用于配置卡片右上角的菜单选项),不是ActionResponseBuilder实例,类型不匹配所以触发错误。
具体实现方案
第一步:清理错误代码
先删除createCatCard函数末尾你添加的两行错误逻辑:
// 删除以下两行代码 var act = CardService.newActionResponseBuilder().setNotification(CardService.newNotification().setText('bob here').setType(CardService.NotificationType.INFO)); card.addCardAction(act);
第二步:按需选择通知触发场景
场景A:用户点击按钮等交互后弹出通知
直接在交互对应的处理函数(比如你代码里的onChangeCat)的返回值中携带通知即可,示例代码:
function onChangeCat(e) { // 原有逻辑:提取参数、构建新的猫卡片 const text = e.parameters.text; const isHomepage = e.parameters.isHomepage === 'true'; const newCatCard = createCatCard(text, isHomepage); // 返回带通知的响应 return CardService.newActionResponseBuilder() .setNotification(CardService.newNotification() .setText('bob here') .setType(CardService.NotificationType.INFO)) .updateCard(newCatCard) .build(); }
场景B:卡片首次加载时就弹出通知
修改你附加组件的入口函数(比如首页触发的onHomepage、上下文触发的onGmailMessageOpen等),不直接返回卡片实例,而是返回带通知的通用响应:
function onHomepage(e) { // 原有逻辑:构建首页卡片 const homeCard = createCatCard('欢迎使用', true); // 返回带通知的响应 return CardService.newUniversalActionResponseBuilder() .displayAddOnCards([homeCard]) .setNotification(CardService.newNotification() .setText('卡片加载成功') .setType(CardService.NotificationType.INFO)) .build(); }
内容的提问来源于stack exchange,提问作者user_78361084
相关产品推荐
相关产品推荐

