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

Google Scripts API自动转发配置未生效,域管理员求助排查

排查Gmail自动转发设置的HTTP请求问题

你遇到的核心问题是请求体参数没有正确传递——在UrlFetchApp.fetch()的配置里,你直接把enabled、emailAddress这些转发配置参数和headers、method平级放置了,但这些参数属于请求体内容,需要单独封装成JSON格式的payload传递,UrlFetchApp不会自动识别顶层的这些参数作为请求体。这就导致Gmail API根本没收到你要设置的转发规则,所以默认返回{"enabled": false},转发自然无法生效。

修正后的代码

function setupForwarding() {
  var service = getOAuthService();
  service.reset();
  try {
    if (service.hasAccess()) {
      var headers = {
        Authorization: 'Bearer ' + service.getAccessToken(),
        'Content-Type': 'application/json' // 必须指定请求体为JSON格式
      };
      var url = "https://www.googleapis.com/gmail/v1/users/apitest@example.com/settings/autoForwarding";
      // 把转发规则封装成对象,再转成JSON字符串作为请求体
      var payload = JSON.stringify({
        enabled: true,
        emailAddress: 'newaddress@example.com',
        disposition: 'trash'
      });
      var response = UrlFetchApp.fetch(url, {
        headers: headers,
        method: 'put',
        payload: payload // 正确传递请求体内容
      });
      Logger.log(response.getContentText());
    }
  } catch (e) {
    Logger.log(e.message);
  }
}

关键修改点说明

  • 添加Content-Type: application/json请求头:明确告诉Gmail API你发送的是JSON格式的请求体,这是API接收参数的必要前提
  • 单独封装payload:将转发配置对象通过JSON.stringify()转换成JSON字符串,作为请求体传递,而不是直接把配置参数放在options的顶层
  • 规范参数命名:把原代码里的header改为headers(虽然不影响功能,但更符合常规命名习惯)

修改完成后,你可以再次调用这个函数,之后用GET请求访问同一个接口,确认返回的JSON数据里enabled是否为true,emailAddress是否正确匹配目标地址,以此验证转发规则是否生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 03:53:00