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

请求POST/GET时遇TypeError:无法读取undefined的'func'属性

Google Apps Script Web应用请求报错排查解决

问题现状

此前正常运行的Google Apps Script Web应用,现在发起POST或GET请求时触发错误:
TypeError: Cannot read property 'func' of undefined (line 12, file "Code")

错误原因

核心问题出在ManageSheet函数的第一行代码:

var e = JSON.stringify(e);

这行代码把传入的请求参数对象e直接转成了字符串类型,后续代码试图访问e.parameter.func时,字符串对象根本没有parameter属性,因此抛出"无法读取undefined的'func'属性"的错误。

修复方案

删掉覆盖原始参数对象的代码,如需记录日志,先对参数对象做字符串化再日志输出,不要修改原始的e对象。修复后的完整代码如下:

function doGet(e) {
  return ManageSheet(e);
}
function doPost(e) {
  return ManageSheet(e);
}

function ManageSheet(e) {
  // 先记录请求参数,不覆盖原始e对象
  Logger.log(JSON.stringify(e));
  
  // 读取全部记录
  if (e.parameter?.func == "ReadAll") {
    var ss = SpreadsheetApp.getActive();
    var sh = ss.getSheets()[parseInt(e.parameter.SN)-1]; 
    var rg = sh.getDataRange().getValues(); 
    var outString = '';
    for(var row=0 ; row<rg.length ; ++row){
      outString += rg[row].join(',') + '\n';  
    } 
    return ContentService.createTextOutput(outString).setMimeType(ContentService.MimeType.TEXT);
  }
  
  // 创建新记录  
  if (e.parameter?.func == "Create") {
    var ss = SpreadsheetApp.getActive();
    var sh = ss.getSheets()[parseInt(e.parameter.SN)-1];
    var data = [
      Utilities.formatDate(new Date(), "GMT+3:30", "MM/dd/yyyy"),
      Utilities.formatDate(new Date(), "GMT+5:30", "HH:mm:ss"),
      e.parameter.A, e.parameter.B, e.parameter.C, e.parameter.D, e.parameter.E,
      e.parameter.F, e.parameter.G, e.parameter.H, e.parameter.I, e.parameter.J,
      e.parameter.K, e.parameter.L, e.parameter.M, e.parameter.N, e.parameter.O,
      e.parameter.P, e.parameter.Q, e.parameter.R, e.parameter.S, e.parameter.T,
      e.parameter.U, e.parameter.V, e.parameter.W, e.parameter.X, e.parameter.Y, e.parameter.Z
    ]; 
    sh.appendRow(data);
    return ContentService.createTextOutput(JSON.stringify(data));
  }
  
  // 处理未匹配的请求,避免无返回值
  return ContentService.createTextOutput("无效请求").setMimeType(ContentService.MimeType.TEXT);
}

额外优化说明

  • 增加了可选链操作符?.,避免当e.parameter不存在时再次触发报错
  • 修复了Create分支的返回值问题:原代码直接返回数组会被强制转成混乱的字符串,改为用JSON.stringify格式化后返回,格式更规范
  • 新增默认返回逻辑,处理未匹配到func参数的请求场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 12:15:41