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

如何在Google App Script中获取Card组件输入框的值?

解决Google Apps Script卡片TextInput字段值获取为null的问题

问题场景

创建卡片时已为TextInput设置setFieldName,但在处理函数中通过e.text_input_form_input_key获取值始终返回null:

卡片构建代码:

function createSelectionCard(e) {
  var builder = CardService.newCardBuilder();

  builder.addSection(CardService.newCardSection()
    .addWidget(CardService.newTextInput()
      .setFieldName("text_input_form_input_key")
      .setTitle("Enter Value")
      .setValue('Test'))
  // 省略其他代码
  return builder.build();
}

处理函数代码:

function Embed(e) {
  // ...其他逻辑
  presentation.getSelection().getCurrentPage().insertImage(dataBlob)
    .setDescription(e.text_input_form_input_key) // 此处返回null
}

问题原因

  1. 提交方式错误:若卡片提交按钮使用普通Action而非FormAction,表单字段不会被打包到事件对象中。
  2. 取值路径错误:即使提交方式正确,表单字段值也并非直接挂载在e对象下,而是存储在e.formInputs中,且每个字段值以数组形式存在(适配多值控件场景)。

修复方案

1. 修改卡片构建代码,改用FormAction提交

给卡片添加提交按钮时,关联FormAction而非普通Action:

function createSelectionCard(e) {
  var builder = CardService.newCardBuilder();

  builder.addSection(CardService.newCardSection()
    .addWidget(CardService.newTextInput()
      .setFieldName("text_input_form_input_key")
      .setTitle("Enter Value")
      .setValue('Test'))
    // 添加提交按钮并关联FormAction
    .addWidget(CardService.newTextButton()
      .setText("提交")
      .setOnClickAction(CardService.newFormAction()
        .setFunctionName("Embed")))
  );

  return builder.build();
}

2. 修改处理函数,从formInputs中正确取值

在Embed函数中,通过e.formInputs获取字段值,取数组第一个元素即可:

function Embed(e) {
  // 正确获取文本输入框的值
  var inputValue = e.formInputs.text_input_form_input_key[0];
  
  // ...其他逻辑
  presentation.getSelection().getCurrentPage().insertImage(dataBlob)
    .setDescription(inputValue);
}

关键说明

setFieldName定义的键,仅在FormAction触发的事件中会映射到e.formInputs对象下。普通Action触发的事件不会携带表单数据,这是导致值为null的核心原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 13:10:27