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

使用SheetDB API更新Google Sheets单元格失败,按PUT文档实现无效

问题排查与修复方案

你的代码存在几个关键问题导致SheetDB更新无效,以下是修复步骤和修正后的代码:

核心问题分析

  1. 错误的API端点:你使用了/search查询接口,这个接口仅用于读取数据,无法执行更新操作。SheetDB的更新必须使用/update端点。
  2. 错误的响应处理逻辑:当前代码不管API请求是否成功,都会弹出"提交成功"的提示,导致你无法察觉请求失败。
  3. 冗余的data包裹层:PATCH请求更新部分字段时,不需要在body外层嵌套data对象,直接传入键值对即可。
  4. 变量名冲突:原代码中重复使用height变量赋值,虽然JS允许,但容易引发逻辑混淆。

修正后的代码

function submit(){
  var weight = document.getElementById("weight").value;
  var height = document.getElementById("height").value;
  var IDnum = document.getElementById("IDnum").value;
  var heightVal = height / 100;
  heightVal = heightVal * heightVal;
  var calc = weight / heightVal;
  var bmi = calc.toFixed(2);
  alert(bmi);

  fetch(`https://sheetdb.io/api/v1/mrdpa17lx93ik/update?id=${IDnum}`,{
    method: "PATCH",
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      "CALCULATED BMI": bmi,
      "duplication": 1
    })
  })
  .then((response) => {
    // 检查HTTP响应状态是否正常
    if (!response.ok) {
      throw new Error(`请求失败,状态码:${response.status}`);
    }
    return response.json();
  })
  .then((data) => {
    console.log("API返回数据:", data);
    confirm("提交成功");
  })
  .catch((error) => {
    console.error("更新失败:", error);
    alert("数据更新失败,请查看控制台获取详细错误信息");
  });
}

额外检查项

  • 确认Google Sheets中的列名与请求里的"CALCULATED BMI"、"duplication"完全一致(SheetDB对列名的大小写、空格敏感)。
  • 确认IDnum对应的值在工作表的id列中存在;如果你的匹配列不是默认的id,需要修改URL中的参数,例如匹配student_id列就写成?student_id=${IDnum}。
  • 检查SheetDB后台的API权限,确保该API密钥对应的工作表开启了写入权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:51:29