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

Google AppScript API部署后返回空JSON对象问题求助

问题分析与解决方案

核心错误1:错误使用数组存储对象属性

你的代码里let row = [];创建了数组,但后续用对象键值对方式(row['name'])赋值。JavaScript中数组的JSON序列化仅处理数字索引元素,字符串键属性不会被序列化,最终每个row都会被转为空数组,这就是你收到[[],[],...]的原因。

核心错误2:行索引需确认匹配表格结构

Google Sheets的getDataRange().getValues()返回的数组索引0对应表格第一行。如果表头在第一行、数据从第二行开始,循环应从i=1而非i=2启动——你本地运行正常说明数据确实从第三行开始,但部署后若表格结构变动,也可能导致无数据返回,需自行核对。

修复后的代码

function doGet() {
  let doc = SpreadsheetApp.getActiveSpreadsheet();
  let sheet = doc.getSheetByName('portfolios');
  if (!sheet) { // 新增工作表存在校验,避免无意义报错
    return ContentService.createTextOutput(JSON.stringify({error: "Sheet 'portfolios' not found"})).setMimeType(ContentService.MimeType.JSON);
  }
  let values = sheet.getDataRange().getValues();

  let output = [];
  // 确认数据起始行:若表头在第1行(values[0]),数据从第2行(values[1])开始则修改i=1
  for (let i = 2; i < values.length; i++) {
    let row = {}; // 改为对象存储键值对,而非数组
    row['name'] = values[i][0];
    row['committee'] = values[i][1];
    row['post'] = values[i][2];
    output.push(row);
  }

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

额外验证步骤

  1. 重新部署Web App:确保选择**“执行为:我”,“谁可以访问:任何人,甚至匿名”**,复制新部署URL测试。
  2. 确认脚本绑定表格:部署后的Web App使用脚本绑定的表格,若为独立脚本,需用SpreadsheetApp.openById("表格ID")指定目标表格,而非getActiveSpreadsheet()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 03:10:25