能否直接导航至子卡片?附加组件条件跳转需求技术咨询
Google Workspace 附加组件:直接导航子卡片与条件式初始跳转
没问题,这两个需求都能完美实现,我给你拆解清楚:
1. 能否直接导航至子卡片?
当然可以!不仅能直接跳转到子卡片,还能配合你的根卡片首页,实现「自动跳转子卡片+支持返回首页」的完整流程。
2. 如何在首页展示根卡片,同时根据邮件内容自动打开子卡片(保留返回按钮)
你的核心需求是:触发附加组件时,先把根卡片组(首页)加载到导航栈里,再根据邮件内容判断是否自动跳转到指定子卡片,而且用户点击返回按钮能回到首页。具体实现如下:
核心思路
- 在
onTriggerFunction中先构建好所有根卡片(也就是你的首页内容); - 根据邮件内容的条件判断是否需要跳转到目标子卡片;
- 使用
Navigation对象的pushCard()方法将子卡片压入导航栈顶——这样根卡片会留在栈底,用户点击返回就能回到首页。
具体代码示例
1. 构建根卡片(首页)
先写个辅助函数生成根卡片集合:
function buildRootCards() { // 创建第一张根卡片 const rootCard1 = CardService.newCardBuilder() .setHeader(CardService.newCardHeader().setTitle("根卡片1")) .addSection(CardService.newCardSection() .addWidget(CardService.newTextParagraph().setText("这是首页的根卡片内容"))) .build(); // 创建第二张根卡片 const rootCard2 = CardService.newCardBuilder() .setHeader(CardService.newCardHeader().setTitle("根卡片2")) .addSection(CardService.newCardSection() .addWidget(CardService.newTextParagraph().setText("另一张根卡片的首页内容"))) .build(); return [rootCard1, rootCard2]; }
2. 构建目标子卡片
再写个函数创建需要跳转的子卡片:
function buildTargetChildCard() { return CardService.newCardBuilder() .setHeader(CardService.newCardHeader().setTitle("目标子卡片")) .addSection(CardService.newCardSection() .addWidget(CardService.newTextParagraph().setText("根据邮件内容触发的子卡片专属内容"))) .build(); }
3. 在onTriggerFunction中处理逻辑
这是关键环节,负责条件判断和导航控制:
function onTriggerFunction(e) { // 第一步:先构建所有根卡片(首页内容) const rootCards = buildRootCards(); // 第二步:根据邮件内容判断是否需要跳转到子卡片 // 这里是模拟逻辑,你可以替换成实际的邮件内容检测逻辑 const needNavigateToChild = checkEmailContent(e); if (needNavigateToChild) { // 创建导航对象,先加载根卡片栈,再将子卡片压入栈顶 const navigation = CardService.newNavigation() .pushCard(buildTargetChildCard()); // 返回包含根卡片和导航指令的响应 return CardService.newActionResponseBuilder() .setNavigation(navigation) .setCards(rootCards) .build(); } else { // 不需要跳转,直接返回根卡片首页 return CardService.newActionResponseBuilder() .setCards(rootCards) .build(); } } // 模拟邮件内容检查函数(请根据实际需求修改) function checkEmailContent(e) { // 示例:如果邮件主题包含「紧急需求」,则触发跳转 return e.messageMetadata.subject.includes("紧急需求"); }
关键说明
setCards(rootCards)会把根卡片加载到导航栈的最底部,作为首页的基础;pushCard(childCard)会把目标子卡片放到栈顶,用户打开附加组件时会直接看到子卡片,点击返回按钮就会回到根卡片组;- 这种方式完全满足你的需求:既返回了完整的根卡片集合,又能根据条件自动跳转子卡片,同时保留返回首页的能力。
内容的提问来源于stack exchange,提问作者Amir Safavi
相关产品推荐
相关产品推荐

