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

如何获取CardService下拉选择框选中值并传递至处理函数?

如何将CardService下拉框的选中值传递至处理函数

嘿,我明白你想实现的效果——把下拉选择框的实时选中值直接传给onModeChange函数对吧?其实在Google Apps Script的CardService里,没办法直接像你设想的那样通过setParams(payment.value)传递实时选中值,但有两种非常靠谱的方式能拿到这个值,我给你详细拆解:

方法1:通过事件对象直接获取选中值(最常用)

你完全不需要手动设置参数,因为当用户切换下拉选项时,系统会自动把包含选中值的event对象传递给你的处理函数。只需要在onModeChange里读取这个对象的对应字段就行:

首先你的下拉框代码可以保持不变:

var payment = CardService.newSelectionInput()
  .setType(CardService.SelectionInputType.DROPDOWN)
  .setTitle("payment mode")
  .setFieldName("payment_mode") // 这个字段名很关键,后面要用来取值
  .addItem("Debit card", "contact", false)
  .addItem("Net banking", "lead", true)
  .setOnChangeAction(CardService.newAction().setFunctionName("onModeChange"));
section.addWidget(payment);

然后处理函数这么写:

function onModeChange(e) {
  // 通过你设置的setFieldName值,从event的formInput中拿到选中值
  var selectedValue = e.formInput.payment_mode;
  
  // 这里就可以用选中值做后续处理了
  console.log("用户选中的支付方式值:" + selectedValue);
  
  // 如果需要更新卡片内容,也可以在这里构建新卡片返回
  var updatedCard = CardService.newCardBuilder()
    .addSection(CardService.newCardSection().addWidget(
      CardService.newTextParagraph().setText("你选中了:" + selectedValue)
    ))
    .build();
  return updatedCard;
}

划重点:e.formInput里的键就是你给下拉框设置的setFieldName("payment_mode"),通过它就能拿到用户选中的选项值(比如示例里的"contact"或"lead")。

方法2:结合固定参数与事件对象(适用于需要额外上下文的场景)

如果你需要传递一些固定的上下文信息(比如当前卡片的唯一标识、某个预设值),可以用setParams传递固定参数,然后在处理函数里同时拿到固定参数和选中值:

修改下拉框的Action部分:

.setOnChangeAction(CardService.newAction()
  .setFunctionName("onModeChange")
  .setParams({pageId: "payment_settings", userId: "123"})); // 传递固定的上下文参数

对应的处理函数:

function onModeChange(e) {
  // 获取下拉框的选中值
  var selectedValue = e.formInput.payment_mode;
  // 获取固定的上下文参数
  var pageId = e.parameters.pageId;
  var userId = e.parameters.userId;
  
  console.log(`选中值:${selectedValue},页面ID:${pageId},用户ID:${userId}`);
  
  // 后续业务逻辑处理...
  var updatedCard = CardService.newCardBuilder().build();
  return updatedCard;
}

关键提醒

实时选中值是用户操作后才确定的,没办法在初始化下拉框的时候通过setParams传递,必须依赖系统自动传入的event对象来获取——这是CardService处理用户交互的标准方式哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:19:08