Google apps script Google脚本API-自动更新转发未应用

Google apps script Google脚本API-自动更新转发未应用,google-apps-script,gmail,gmail-api,urlfetch,Google Apps Script,Gmail,Gmail Api,Urlfetch,作为我所在公司的域管理员,我们希望在员工离开公司时设置他们的转发地址,以确保不会遗漏任何重要的通信 到目前为止,我已经成功地使用了GoogleAppsOAuth2库,但是遇到了一个障碍。以下代码用于转发来自地址apitest@example.com至newaddress@example.com function setupForwarding() { var service = getOAuthService(); service.reset(); try { if (ser

作为我所在公司的域管理员,我们希望在员工离开公司时设置他们的转发地址,以确保不会遗漏任何重要的通信

到目前为止,我已经成功地使用了GoogleAppsOAuth2库,但是遇到了一个障碍。以下代码用于转发来自地址apitest@example.comnewaddress@example.com

function setupForwarding() {
  var service = getOAuthService();
  service.reset();
  try {
    if (service.hasAccess()) {
      var header = {
        Authorization: 'Bearer ' + service.getAccessToken(),
      }
      var url = "https://www.googleapis.com/gmail/v1/users/apitest@example.com/settings/autoForwarding";
      var response = UrlFetchApp.fetch(url, {
        headers: header,
        method: 'put',
        enabled: true,
        emailAddress: 'newaddress@example.com',
        disposition: 'trash'
      });
      Logger.log(response.getContentText());
    }
  } catch (e) {
    Logger.log(e.message);
  }
}
提供的访问令牌似乎与UrlFetchApp提供的其他查询配合使用,例如使用它返回帐户上记录的当前授权转发地址(其中包括newaddress@example.com)并且不报告任何访问权限错误。响应仅返回以下内容

{ "enabled" : false }
并且不应用任何转发。有人能帮我找出问题吗?我觉得我可能错误地将参数传递给HTTP请求,但我仍在学习如何处理该系统,而且我发现没有其他问题对我有帮助

  • 奥齐

    • 我解决了这个问题,它比我想象的要简单;因此,在这里分享答案,以防有人有类似的问题

          var response = UrlFetchApp.fetch(url, {
            headers: header,
            method: 'put',
            contentType : 'application/json',
            payload: '{ "enabled" : "true" , "emailAddress" : "newaddress@example.com" , "disposition" : "trash" }'
          });
      

      是实现这一点的功能性方法;请求需要一个单独的负载和声明的内容类型

      这是通过服务帐户完成的吗?根据REST API文档,执行用户必须是具有域权限的服务帐户。运行该服务帐户的服务帐户确实具有域权限,似乎正在处理其他请求;这就是我正在努力解决的问题。你可以尝试在项目中启用Gmail的高级服务,然后使用本机客户端库,即
      Gmail。用户….
      感谢分享答案Ozzie。我在同一个问题上浪费了几个小时。令人遗憾的是,谷歌Gmail API在他们的文档中没有明确说明单独的“有效负载”结构。我像您一样将“enabled”和“emailAddress”以及“disposition”字段放在响应正文中。