You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否直接导航至子卡片?附加组件条件跳转需求技术咨询

Google Workspace 附加组件:直接导航子卡片与条件式初始跳转

没问题,这两个需求都能完美实现,我给你拆解清楚:

1. 能否直接导航至子卡片?

当然可以!不仅能直接跳转到子卡片,还能配合你的根卡片首页,实现「自动跳转子卡片+支持返回首页」的完整流程。

2. 如何在首页展示根卡片,同时根据邮件内容自动打开子卡片(保留返回按钮)

你的核心需求是:触发附加组件时,先把根卡片组(首页)加载到导航栈里,再根据邮件内容判断是否自动跳转到指定子卡片,而且用户点击返回按钮能回到首页。具体实现如下:

核心思路

  1. 在onTriggerFunction中先构建好所有根卡片(也就是你的首页内容);
  2. 根据邮件内容的条件判断是否需要跳转到目标子卡片;
  3. 使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:03:03