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

在Google Apps Script中调用OpenAI API时API密钥验证失败问题

问题解决:GAS调用OpenAI API提示未提供API密钥

你的代码核心问题是请求参数结构错误,把请求体数据放到了headers对象里,同时未指定正确的请求方法,导致OpenAI API无法正确解析请求。

错误原因拆解

原cURL命令中:

  • -H对应请求头信息
  • -d对应POST请求的请求体数据

而你在GAS代码里把model/prompt这类请求体参数放到了headers对象中,不符合UrlFetchApp的参数规范;同时UrlFetchApp默认使用GET请求,而OpenAI的completions接口仅支持POST请求,这两个问题共同引发了报错。

修正后的代码

function myFunction() {
  var url = "https://api.openai.com/v1/completions";
  // 正确构造请求配置参数
  var options = {
    method: "POST", // 必须指定POST请求方法
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer YOUR_API_KEY' // 替换为你的实际API密钥
    },
    payload: JSON.stringify({ // 请求体需转为JSON字符串
      'model': 'text-davinci-002',
      'prompt': 'Say this is a test',
      'temperature': 0,
      'max_tokens': 6
    })
  };

  try {
    var response = UrlFetchApp.fetch(url, options);
    var data = JSON.parse(response.getContentText());
    Logger.log(data);
  } catch (e) {
    Logger.log("请求错误:" + e.toString());
  }
}

关键注意事项

  • 严格区分headers和payload:headers仅存放请求头信息,payload存放POST请求的主体数据,且必须通过JSON.stringify()转换为字符串(匹配Content-Type要求)。
  • 必须显式声明method: "POST",避免使用默认的GET请求。
  • 确认API密钥无多余空格或特殊字符,保证密钥格式正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:55:26