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

Apps Script侧边栏创建Trello卡片返回500状态码问题

故障根因与修复方案

你的代码存在3个会直接触发Trello服务端返回500错误的问题,和侧边栏场景本身没有关系:Apps Script侧边栏没有限制外部API调用,Trello API也开放了跨域支持,问题全部出在请求构造逻辑上:

  • 你在模板字符串中拼接URL时,为了可读性给查询参数加了折行和前置缩进,实际生成的请求URL会混入大量换行符、多余空格,直接导致服务端路由解析失败
  • 所有用户输入的参数(name/request/details)没有做URL编码,一旦内容包含空格、&、中文等特殊字符,会直接打断查询参数的键值对结构,服务端无法识别必填参数
  • 所有变量未做显式声明,且你需要确认key/token/idList三个鉴权/定位参数在侧边栏的前端沙箱环境中能正常取值——Apps Script侧边栏的前端运行环境和服务端脚本环境是隔离的,如果这三个值只存在于服务端,前端拿到的会是undefined,直接导致请求缺失必填参数

修复后可直接运行的代码

用URLSearchParams构造查询参数可以一次性解决编码、格式问题,避免手动拼接URL的低级错误:

function createCard() {
    // 显式声明变量,规避严格模式下的隐式全局报错
    const name = document.querySelector('#n').value.trim();
    const request = document.querySelector('#r').value.trim();
    const details = document.querySelector('#d').value.trim();
    const priority = document.querySelector('#high');
    const idLabels = priority.checked ? '62a685a6ea88a630d3da970f' : '62a685b2b835cd665d8ba4ac';

    // 自动处理参数编码、拼接,不会混入多余字符
    const reqParams = new URLSearchParams({
        key: key,
        token: token,
        idList: idList,
        name: `${name} - ${request}`,
        desc: details,
        idLabels: idLabels
    });

    fetch(`https://api.trello.com/1/cards?${reqParams.toString()}`, {
        method: 'POST'
    }).then(response => {
        console.log(`Response: ${response.status} ${response.statusText}`);
        return response.text();
    }).then(resText => console.log(resText))
    .catch(err => console.error(err));
}

验证步骤

  1. 代码替换后先在侧边栏控制台打印最终生成的请求URL,确认没有多余换行、空格,没有出现undefined的参数值
  2. 如果还是报错,先把打印出来的完整URL直接复制到浏览器地址栏发请求,看返回的具体报错信息,就能快速定位是参数缺失还是鉴权失效
  3. 你之前查到的Confluence接口500问题和当前场景的核心诱因一致,都是请求参数构造错误导致的服务端解析失败,和是否用侧边栏没有关联

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:09:20