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

如何适配Braspress的POST类型API以在Google Sheets中调用?

解决方案:在Google Sheets中调用Braspress POST API

我已经能通过GET方法在Google Sheets中调用其他API并生成工作表,但调用Braspress的POST API时始终失败。以下是该API的官方调用示例,以及适配Google Sheets的完整解决方案:


官方调用示例参考

Curl示例

curl -v -H "Authorization: Basic Y2xpZW50ZTpjbGllbnRl" -H "Content-Type: application/json" -d '{"cnpjRemetente":60701190000104,"cnpjDestinatario":30539356867,"modal":"R","tipoFrete":"1", "cepOrigem":2323000,"cepDestino":7093090,"vlrMercadoria":100.00,"peso":50.55,"volumes":100}, "cubagem":[{"altura":0.46,"largura":0.67,"comprimento":0.67,"volumes":10}]}' -X POST https://api.braspress.com/v1/cotacao/calcular/json

JavaScript示例

var authorizationBasic = 'Y2xpZW50ZTpjbGllbnRl';
$.ajax({
type: 'POST',
url: 'https://api.braspress.com/v1/cotacao/calcular/json',
data: '{"cnpjRemetente":60701190000104,"cnpjDestinatario":30539356867,"modal":"R","tipoFrete":"1", "cepOrigem":2323000,"cepDestino":7093090,"vlrMercadoria":100.00,"peso":50.55,"volumes":10,"cubagem":[{"altura":0.46,"largura":0.67,"comprimento":0.67,"volumes":10}]}',
dataType: "json",
contentType: 'application/json; charset=utf-8',
xhrFields: {
withCredentials: true
},
crossDomain: true,
headers: {
'Authorization': 'Basic ' + authorizationBasic,
},
success: function (result) {
console.log(result);
},
error: function (req, status, error) {
console.log(error);
}

适配Google Sheets的实现代码

使用Google Apps Script的UrlFetchApp工具完成POST请求,步骤如下:

  1. 打开目标Google工作表,点击「扩展程序」→「Apps脚本」
  2. 替换默认代码为以下内容:
function callBraspressAPI() {
  // 替换为你的Braspress API基础认证令牌
  const authToken = 'Y2xpZW50ZTpjbGllbnRl';
  const apiUrl = 'https://api.braspress.com/v1/cotacao/calcular/json';

  // 构造符合API要求的请求体(已修正原示例的JSON语法错误)
  const requestPayload = {
    "cnpjRemetente": 60701190000104,
    "cnpjDestinatario": 30539356867,
    "modal": "R",
    "tipoFrete": "1",
    "cepOrigem": 2323000,
    "cepDestino": 7093090,
    "vlrMercadoria": 100.00,
    "peso": 50.55,
    "volumes": 10,
    "cubagem": [
      {
        "altura": 0.46,
        "largura": 0.67,
        "comprimento": 0.67,
        "volumes": 10
      }
    ]
  };

  // 请求配置
  const fetchOptions = {
    method: 'post',
    contentType: 'application/json',
    headers: {
      'Authorization': 'Basic ' + authToken
    },
    payload: JSON.stringify(requestPayload),
    muteHttpExceptions: true // 开启后可获取完整错误信息,便于调试
  };

  try {
    const response = UrlFetchApp.fetch(apiUrl, fetchOptions);
    const responseData = JSON.parse(response.getContentText());

    // 将响应结果写入工作表(示例:从A1单元格开始写入)
    const activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    activeSheet.getRange(1, 1).setValue('API响应结果');
    activeSheet.getRange(2, 1).setValue(JSON.stringify(responseData, null, 2));

    Logger.log('请求成功:' + JSON.stringify(responseData));
    return responseData;
  } catch (error) {
    Logger.log('请求失败:' + error.toString());
    // 打印详细错误响应内容
    if (error.response) {
      Logger.log('错误响应详情:' + error.response.getContentText());
    }
    return null;
  }
}

关键注意事项

  • 修复JSON语法错误:原curl示例中的JSON存在语法错误("volumes":100}, "cubagem"多了一个右括号),这是常见的请求失败原因,已在代码中修正。
  • 凭证安全:确保authToken是你的Braspress API凭证的Base64编码值,不要在公共场合泄露。
  • 请求格式要求:必须设置contentType: 'application/json',且用JSON.stringify()将对象转为JSON字符串作为请求体,否则API无法解析。
  • 权限授权:首次运行脚本时,需要授权Google Apps Script访问外部API和你的工作表。

调试排查方法

如果请求仍失败,可通过以下方式定位问题:

  • 查看脚本编辑器的「日志」(点击「查看」→「日志」),获取详细错误信息。
  • 用Postman或curl先测试请求是否正常,排除API凭证或参数格式问题。
  • 核对Braspress API文档,确认所有参数的类型、格式是否符合要求(如CNPJ、CEP的数值格式)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:15:36