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

Google Apps Script问题:修复External IDs列显示[object Object]异常

解决Google Apps Script中External IDs列显示[object Object]的问题

原函数运行后,External IDs列所有行均显示[object Object],无法展示预期的键值对格式。需要修改代码,让该列呈现类似{isrc=123,ean=456}的格式。

问题根源

track.external_ids是一个JavaScript对象,直接调用setText(value)时,对象会被默认转换为字符串[object Object],而非我们需要的键值对格式。

修改方案

添加一个辅助函数,将对象转换为指定格式的字符串:遍历对象的键值对,拼接成键=值的形式,用逗号分隔后包裹在大括号中。然后在处理track.external_ids字段时,使用这个函数转换对象。

修改后的完整代码

function func() {

  var data = [
    { "track": { "name": "Song1", "album": {"name":"Album1"}, "id": "ABC", "url": "www.example.com/1", "external_ids":{"isrc":"123","ean":"456"} }, "added_at":"today1" },
    { "track": { "name": "Song2", "album": {"name":"Album2"}, "id": "DEF", "url": "www.example.com/2", "external_ids":{"isrc":"123"} }, "added_at":"today2" },
    { "track": { "name": "Song3", "album": {"name":"Album3"}, "id": "XYZ", "url": "www.example.com/3", "external_ids":{"isrc":"123","upc":"789"} }, "added_at":"today3" }
  ];

  // 新增辅助函数:将对象转换为指定格式的字符串
  function formatExternalIds(obj) {
    var pairs = [];
    for (var key in obj) {
      if (obj.hasOwnProperty(key)) {
        pairs.push(`${key}=${obj[key]}`);
      }
    }
    return `{${pairs.join(',')}}`;
  }

  var headers = [["Track ID", "Name", "Album", "Added At","External IDs"]];
  var keys = ["track.id", "track.name", "track.album.name", "added_at", "track.external_ids"];

  var richTextValues = data.map((item) =>
    keys.map(c => {
      var keysArr = c.split('.');
      var value = keysArr.reduce((a, b) => a[b], item);
      // 处理external_ids字段,转换为指定格式
      var text = c === 'track.external_ids' ? formatExternalIds(value) : value;
      var rt = SpreadsheetApp.newRichTextValue().setText(text);
      if (keysArr[0] === "track" && keysArr[1] === "id") rt.setLinkUrl(item.track.url);
      return rt.build();
    })
  );

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // 设置表头
  sheet.getRange(1,1,1,headers[0].length).setValues(headers);
  // 设置内容
  sheet.getRange(2, 1, richTextValues.length, richTextValues[0].length).setRichTextValues(richTextValues);
  
}

说明

  1. 新增的formatExternalIds函数负责将对象转换为目标格式,确保每个键值对以key=value形式呈现,多个键值对用逗号分隔,整体包裹在大括号中。
  2. 在遍历字段时,判断当前字段是否为track.external_ids,若是则调用转换函数生成字符串,否则直接使用原始值。
  3. 原代码中多余的keys变量判断已移除,直接用split('.')处理所有字段路径,逻辑更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 22:20:21