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

Google Sheets Web app返回多层嵌套JSON结构实现方案

实现方案

修改原有getData函数的遍历逻辑,通过临时索引做层级归类,把扁平化的行数据组装为「剧集-季-单集」三层嵌套结构,替换原有代码即可生效。

完整修改后代码

function doGet(e){
  var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/sskey/edit#gid=0");
  var sheet = ss.getSheetByName("TV_Series");
  return getData(sheet); 
}

function getData(sheet){
  var res = {};
  // 临时索引,避免重复创建同剧集、同季对象
  const seriesCache = {};
  const rows = sheet.getRange(2,1,sheet.getLastRow()-1, sheet.getLastColumn()).getValues();
  
  for(let i = 0; i < rows.length; i++){
    const row = rows[i];
    // 逐行提取字段,季数、集数转数字匹配预期结构类型
    const seriesName = row[0];
    const seasonName = row[1];
    const seasonNum = Number(row[2]);
    const epName = row[3];
    const epNum = Number(row[4]);
    const mediaUrl = row[8];

    // 初始化不存在的剧集节点
    if(!seriesCache[seriesName]){
      seriesCache[seriesName] = {
        name: seriesName,
        seasons: [],
        seasonCache: {}
      }
    }
    const curSeries = seriesCache[seriesName];

    // 初始化不存在的季节点
    if(!curSeries.seasonCache[seasonNum]){
      const newSeason = {
        name: seasonName,
        season_number: seasonNum,
        episodes: []
      }
      curSeries.seasons.push(newSeason);
      curSeries.seasonCache[seasonNum] = newSeason;
    }
    const curSeason = curSeries.seasonCache[seasonNum];

    // 追加当前单集到对应季下
    curSeason.episodes.push({
      name: epName,
      episode_number: epNum,
      url: mediaUrl
    })
  }

  // 单剧集返回(和你给出的示例结构一致)
  res.series = Object.values(seriesCache)[0];
  // 若表格存储多部剧,注释上一行,放开下一行即可返回多剧集列表
  // res.series = Object.values(seriesCache);

  return ContentService.createTextOutput(JSON.stringify(res)).setMimeType(ContentService.MimeType.JSON);
}

逻辑说明

  • 遍历行数据时通过缓存对象判断当前剧集、季是否已创建,避免生成重复节点
  • 自动将表格读取到的季数、集数字符串转为数值类型,匹配预期结构的字段格式
  • 输出字段完全对齐给出的示例:单集媒体地址字段名为url,移除了扁平化结构中冗余的跨层级字段
  • 预留多剧集支持,仅需修改一行代码即可适配表格存储多部剧的场景

如果表格内单集顺序混乱,可在组装完数据后对每个季下的episodes数组按episode_number做升序排序,保证返回顺序正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:51:21