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

使用Google Script触发GitHub Workflow时遇404错误求助

问题:Google Script调用GitHub Actions API返回404错误

我想用Google表单触发GitHub Workflow,用curl测试功能正常,但用以下Google Script代码运行时,返回404错误:

const data = {"ref": "main"};

var options = {
  method: "post",
  header: {authorization: 'token <MY_TESTED_GITHUB_TOKEN>'},
  payload: JSON.stringify(data)
};

var response = UrlFetchApp.fetch("https://api.github.com/repos/<ID>/<MY_REPO>/actions/workflows/new_request.yml/dispatches", options);

错误信息:

Exception: Request failed for https://api.github.com returned code 404. Truncated server response: {"message":"Not Found","documentation_url":"https://docs.github.com/rest/reference/actions#create-a-workflow-dispatch-event"} (use muteHttpExceptions option to examine full response)


解决方案

出现404的核心原因是请求配置有误,以下是修正后的代码及关键修改点:

const data = {"ref": "main"};

var options = {
  method: "post",
  headers: { // 修正:header → headers(复数)
    authorization: 'token <MY_TESTED_GITHUB_TOKEN>',
    'Content-Type': 'application/json' // 新增:指定请求体格式为JSON
  },
  payload: JSON.stringify(data),
  muteHttpExceptions: true // 可选:开启后可获取完整响应用于调试
};

var response = UrlFetchApp.fetch("https://api.github.com/repos/<ID>/<MY_REPO>/actions/workflows/new_request.yml/dispatches", options);
// 调试用:打印完整响应内容
Logger.log(response.getContentText());

关键修改说明:

  • 请求头键名修正:Google Script的UrlFetchApp配置中,请求头的正确键名是headers(复数),原代码中的header会被忽略,导致GitHub未收到授权信息,返回404(API会用404隐藏权限不足的真实原因)。
  • 添加Content-Type头:由于payload是JSON字符串,必须明确指定Content-Type: application/json,否则GitHub会将请求体当作表单数据解析,无法识别ref参数,进而触发路径不存在的错误。
  • 可选调试配置:muteHttpExceptions: true可以避免直接抛出异常,允许你获取完整的响应内容,方便排查后续可能出现的问题。

此外,建议再核对以下内容:

  • 确认API路径中的<ID>(用户名/组织名)、<MY_REPO>(仓库名)、new_request.yml(工作流文件名)拼写完全正确,GitHub对路径大小写敏感。
  • 确保GitHub Token拥有repo权限(尤其是workflow权限),虽然curl测试正常,但需确认Google Script使用的是同一Token。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 20:17:27