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

Angular读取Google Sheets数据如何映射行列后存储到Firebase数据库

解决方案

你当前代码的核心问题是未将行数组与表头字段做映射,直接存储了索引为键的数组结构,按以下调整即可实现需求:

完整修改后代码

excelData(){
  const sf = "https://docs.google.com/spreadsheets/d/1qeCEUlVt_hnuyhnoT1wxMMSv7kZW1s4cUIRLynJ0TxQ/gviz/tq";
  this.http.get(sf,{responseType: 'text'}).subscribe(res=>{
    const data = res.toString().match(/google\.visualization\.Query\.setResponse\(([\s\S\w]+)\)/);
    if(data && data.length == 2){
      const obj = JSON.parse(data[1]);
      const table = obj.table;
      // 提取表头字段
      const header = table.cols.map(({label}) => label);
      // 提取原始行数据
      const rows = table.rows.map(({c}) => c.map(({v}) => v));
      
      // 行列映射生成目标格式的用户数据
      const formattedUserData = rows.map(row => {
        return row.reduce((userObj, value, index) => {
          // 把对应索引的表头作为字段名,行值作为字段值
          userObj[header[index]] = value;
          return userObj;
        }, {});
      });

      console.log('格式化后的数据', formattedUserData);

      // 存储到Firebase,二选一即可
      // 方案1:所有用户数据作为数组存在单个文档中
      this.collection.doc('user_list').set({ users: formattedUserData });
      // 方案2:每个用户单独存储为collection下的独立文档
      // formattedUserData.forEach(user => {
      //   this.collection.doc().set(user);
      // });
    }
  });
}

调整说明

  • 新增的formattedUserData生成逻辑通过map+reduce组合完成行列映射,完全匹配你需要的UserData结构,不会再出现0、1、2这类数字字段名
  • Firebase存储提供两种常用方案,可根据你的业务需求选择:如果需要统一管理整表数据选方案1,如果需要对单个用户数据做增删改查选方案2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:39:05