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

Gmail Apps Script:创建草稿并更新卡片功能实现异常

解决Gmail插件按钮同时创建草稿并更新卡片的问题

问题概述

需要实现一个按钮,点击后同时完成两项操作:创建邮件草稿、更新当前显示的卡片。单独执行其中一项功能时代码正常,但尝试同时返回两个响应时触发报错:

Apps Script返回的类型无法被插件平台使用,请确保返回前调用build方法。

相关代码

按钮定义代码

// onGmailMessage.gs
CardService.newTextButton()
    .setText('Create draft and update card')
    .setComposeAction(CardService.newAction().setFunctionName('updateDraft'), CardService.ComposedEmailType.REPLY_AS_DRAFT)

单独创建草稿的正常代码

// updateDraft()
return CardService.newComposeActionResponseBuilder()
  .setGmailDraft(draft)
  .build()

尝试同时执行两项操作的报错代码

// FIXME: The value returned from Apps Script has a type that cannot be used by the add-ons platform. Also make sure to call build on any builder before returning it.
return [
  // Update the draft
  CardService.newComposeActionResponseBuilder().setGmailDraft(draft).build(),
  // Update the card
  CardService.newActionResponseBuilder()
    .setNavigation(
      CardService.newNavigation().popToRoot().updateCard(onGmailMessage(e))
    )
    .setStateChanged(true)
    .build(),
]

原因分析

Gmail插件中,setComposeAction绑定的响应函数仅允许返回ComposeActionResponse类型对象,不支持返回多个响应组成的数组。直接返回数组会导致平台无法识别响应类型,从而触发报错。

解决方案

要同时实现创建草稿和更新卡片,需调整操作逻辑,改用普通点击按钮替代composeAction按钮,在函数中先完成草稿创建,再返回卡片更新响应:

修正后的代码示例

按钮定义修改

// onGmailMessage.gs
CardService.newTextButton()
    .setText('Create draft and update card')
    .setOnClickAction(CardService.newAction().setFunctionName('createDraftAndUpdateCard'))

核心功能实现函数

function createDraftAndUpdateCard(e) {
  // 1. 自定义草稿创建逻辑(示例)
  const draft = GmailApp.createDraft(
    'recipient@example.com',
    'Draft Subject',
    'Draft body content',
    {cc: 'cc@example.com'}
  );

  // 2. 返回卡片更新响应
  return CardService.newActionResponseBuilder()
    .setNavigation(
      CardService.newNavigation().popToRoot().updateCard(onGmailMessage(e))
    )
    .setStateChanged(true)
    .build();
}

逻辑说明

  • 改用setOnClickAction绑定普通点击事件,函数不再受限于返回单一的ComposeActionResponse。
  • 通过GmailApp.createDraft()直接创建草稿,再返回ActionResponse完成卡片更新,实现两项操作的同步执行。

内容的提问来源于stack exchange,提问作者Garrett

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:32:39