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

调用Sheety写入Google Sheet遇权限错误及500服务器错误求助

问题描述

我用以下Python代码同步运动数据至Google Sheet:

import requests
from datetime import datetime

GENDER = YOUR GENDER
WEIGHT_KG = YOUR WEIGHT
HEIGHT_CM = YOUR HEIGHT
AGE = YOUR AGE

APP_ID = YOUR NUTRITIONIX APP ID
API_KEY = YOUR NUTRITIONIX API KEY
exercise_endpoint = "https://trackapi.nutritionix.com/v2/natural/exercise"
sheet_endpoint = YOUR SHEETY ENDPOINT
exercise_text = input("Tell me which exercises you did: ")
headers = {
    "x-app-id": APP_ID,
    "x-app-key": API_KEY,
}
parameters = {
    "query": exercise_text,
    "gender": GENDER,
    "weight_kg": WEIGHT_KG,
    "height_cm": HEIGHT_CM,
    "age": AGE
}
response = requests.post(exercise_endpoint, json=parameters, headers=headers)
result = response.json()

################### Start of Step 4 Solution ######################

today_date = datetime.now().strftime("%d/%m/%Y")
now_time = datetime.now().strftime("%X")

for exercise in result["exercises"]:
    sheet_inputs = {
        "workout": {
            "date": today_date,
            "time": now_time,
            "exercise": exercise["name"].title(),
            "duration": exercise["duration_min"],
            "calories": exercise["nf_calories"]
        }
    }

    sheet_response = requests.post(sheet_endpoint, json=sheet_inputs)

    print(sheet_response.text)

执行后预期Google Sheet新增一行运动数据,但实际返回权限错误:

{
  "errors": [
    {
      "detail": "The caller does not have permission"
    }
  ]
}

同时触发异常:

raise HTTPError(http_error_msg, response=self) requests.exceptions.HTTPError: 500 Server Error: Internal Server Error for url:

解决方案

权限错误修复

  • 检查Sheety项目权限:
    登录Sheety后台,找到对应项目,将权限设置为Anyone, even anonymous(测试阶段可用);若需认证,要在请求headers中添加正确的认证信息:
    • API密钥认证:添加"Authorization": "Bearer {你的Sheety API密钥}"
    • 基本认证:将用户名密码转为Base64编码后,添加"Authorization": "Basic {编码后的字符串}"
  • 确认Google Sheet共享权限:
    打开目标Google Sheet,点击右上角「共享」,确保Sheety访问账号(或服务账号)拥有编辑权限,不能仅设置为查看。

500服务器错误修复

  • 验证Sheety端点正确性:
    确认sheet_endpoint格式正确,例如https://api.sheety.co/xxx/xxx/workouts,末尾无多余斜杠,且表名(代码中为workout)与Sheety后台的表名称完全匹配(大小写敏感)。
  • 核对请求数据结构:
    确保sheet_inputs中的键名(date、time等)与Google Sheet的列名完全一致,Sheety对大小写敏感,需严格匹配。
  • 添加异常处理逻辑:
    修改代码捕获请求异常,便于定位问题:
    for exercise in result["exercises"]:
        sheet_inputs = {
            "workout": {
                "date": today_date,
                "time": now_time,
                "exercise": exercise["name"].title(),
                "duration": exercise["duration_min"],
                "calories": exercise["nf_calories"]
            }
        }
    
        try:
            sheet_response = requests.post(sheet_endpoint, json=sheet_inputs)
            sheet_response.raise_for_status()
            print(sheet_response.text)
        except requests.exceptions.HTTPError as e:
            print(f"请求错误详情: {e}")
            print(f"响应内容: {sheet_response.text}")
    
  • 切换至新版Sheety API:
    若使用旧版Sheety服务,可能存在兼容性问题,建议切换到新版API,确保端点为官方最新地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:35:28