如何在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
相关产品推荐
相关产品推荐

