Google apps script Google脚本API-自动更新转发未应用
作为我所在公司的域管理员,我们希望在员工离开公司时设置他们的转发地址,以确保不会遗漏任何重要的通信 到目前为止,我已经成功地使用了GoogleAppsOAuth2库,但是遇到了一个障碍。以下代码用于转发来自地址apitest@example.com至newaddress@example.comGoogle 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
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”字段放在响应正文中。