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

如何在AppScript的HTML下拉框选项标签中映射对象键值对

解决方法

你的核心问题是**listAccounts()返回的是对象而非数组**,原代码用数组的遍历方式(data.length+索引)无法正常遍历对象的键值对。以下是两种可行的修改方案:

方案1:使用Object.entries()遍历键值对

Object.entries()会把对象转换成[键, 值]格式的二维数组,直接遍历这个数组就能拿到每一组键值:

<div class="form-group">
    <? var accounts = listAccounts() ?>
    <optgroup label="Ad Accounts">
        <? Object.entries(accounts).forEach(([accountName, accountPath]) => { ?>
            <option value="<?= accountPath ?>"><?= accountName ?></option>
        <? }) ?>
    </optgroup>
</div>

方案2:使用Object.keys()遍历键再取值

先获取对象的所有键,再通过键拿到对应的值:

<div class="form-group">
    <? var accounts = listAccounts() ?>
    <optgroup label="Ad Accounts">
        <? Object.keys(accounts).forEach(accountName => { ?>
            <option value="<?= accounts[accountName] ?>"><?= accountName ?></option>
        <? }) ?>
    </optgroup>
</div>

关键说明

  • 原代码的for循环未闭合,且用数组索引遍历对象无效,上述方案用forEach实现更简洁的遍历逻辑
  • 示例中把对象的键(如abc)作为option显示文本,值(如accountSummaries/123)作为option的value属性,符合下拉选择的常规逻辑——显示友好名称,提交实际业务值
  • 确保listAccounts()在Code.gs中是公开可调用的常规函数(无隐藏限制)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:22:49