Gmail Apps Script插件:组件能否同时执行撰写与导航操作?
解决Gmail插件创建草稿后导航返回的问题
你遇到的问题是Gmail插件中,DecoratedText组件同时绑定setComposeAction和setOnClickAction时,只有撰写草稿的动作生效,导航逻辑不会执行。这是因为Gmail插件的组件不支持同一个点击事件触发两个独立动作,setComposeAction会优先覆盖点击动作。
要实现创建草稿后关闭模板菜单、返回之前页面的需求,不需要单独绑定点击导航动作,而是在撰写动作的回调函数里同时返回草稿内容和导航指令。具体步骤如下:
1. 修改撰写动作的回调函数
在myComposeAction函数中,完成草稿内容构建后,添加导航逻辑,最后将两者组合成一个完整的响应返回:
function myComposeAction(e) { // 构建模板邮件的草稿内容 var draftResponse = CardService.newComposeActionResponseBuilder() .setSubject("你的模板主题") .setBodySection(CardService.newKeyValue().setContent("你的模板邮件正文")) // 可选:添加收件人、抄送等 // .setToRecipients(["example@domain.com"]) .build(); // 创建导航动作:弹出当前模板列表卡片,回到上一级页面 var navigation = CardService.newNavigation().popCard(); // 如果需要直接替换成主页面卡片,也可以用: // var navigation = CardService.newNavigation().updateCard(getMainCard()); // 组合草稿响应和导航动作 var actionResponse = CardService.newActionResponseBuilder() .setComposeActionResponse(draftResponse) .setNavigation(navigation) .build(); return actionResponse; }
2. 组件仅绑定撰写动作
去掉setOnClickAction,只保留setComposeAction:
templateCard .setComposeAction( myComposeAction, CardService.ComposedEmailType.STANDALONE_DRAFT );
关键说明
- Gmail插件允许撰写动作的回调返回包含导航的
ActionResponse,这样创建草稿完成后会自动执行导航逻辑。 popCard()适用于通过pushCard进入模板列表的场景,能直接关闭当前卡片回到上一级;如果是其他页面跳转逻辑,可以用updateCard()替换为目标卡片。- 同一个组件的点击事件只能绑定一个核心动作,不要同时混用
setComposeAction和setOnClickAction。
内容的提问来源于stack exchange,提问作者Elizaveta Leskova
相关产品推荐
相关产品推荐

