问题描述
我正在使用POSThttps://www.googleapis.com/gmail/v1/users/userId/settings/sendAs,并且能够在GSuite帐户中添加带有签名的别名ID,但是我正在尝试使用相同的代码更新主要GSuite帐户的签名,但它没有更新。
请指导如何应用逻辑来使用服务帐户更新主GSuite帐户签名
https://developers.google.com/gmail/api/v1/reference/users/settings/sendAs
数据-lang="js"数据-隐藏="假"数据-控制台="真"数据-巴贝尔="假">var service_account = {
"private_key":"-----BEGIN PRIVATE KEY-----VE=
-----END PRIVATE KEY-----
",
"client_email":"xxxxxx",
"client_id": "xxxxxxx",
"userEmail" = 'admin@demo.in';
};
function getOAuthService(user) {
return OAuth2.createService("Service Account")
.setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth')
.setTokenUrl('https://accounts.google.com/o/oauth2/token')
.setPrivateKey(service_account.private_key)
.setIssuer(service_account.client_email)
.setSubject(userEmail)
.setPropertyStore(PropertiesService.getScriptProperties())
.setParam('access_type', 'offline')
.setParam('approval_prompt', 'force')
.setScope('https://www.googleapis.com/auth/gmail.settings.sharing https://www.googleapis.com/auth/gmail.settings.basic');
}
function createAlias() {
var userEmail = 'admin@demo.in';
//var alias = 'Testing@demo.in';
//var alias_name = ' User';
var signature = 'Testing';
var service = getOAuthService();
service.reset();
if (service.hasAccess()) {
var url = 'https://www.googleapis.com/gmail/v1/users/me/settings/sendAs'
var headers ={
"Authorization": 'Bearer ' + service.getAccessToken(),
"Accept":"application/json",
"Content-Type":"application/json",
};
var resource ={
sendAsEmail: alias,
signature: signature,
replyToAddress : alias,
treatAsAlias: true,
verificationStatus: 'accepted',
isPrimary:true,
isDefault:true
};
var options = {
'headers': headers,
'method': 'POST',
'payload':JSON.stringify(resource),
'muteHttpExceptions': true
};
Logger.log(options);
var response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText());
}
}
function reset() {
var service = getOAuthService();
service.reset();
}
推荐答案
您需要使用Users.settings.sendAs: patch
在Apps脚本中,您可以这样做:function changeSignature() {
var userId = 'your primary email';
var sendAsEmail = userId;
var signature = 'Testing';
var service = getService();
service.reset();
if (service.hasAccess()) {
var url = 'https://www.googleapis.com/gmail/v1/users/'+userId+'/settings/sendAs/'+sendAsEmail
var headers ={
"Authorization": 'Bearer ' + service.getAccessToken(),
"Accept":"application/json",
"Content-Type":"application/json",
};
var resource ={
"signature": signature,
};
var options = {
'headers': headers,
'method': 'PATCH',
'payload':JSON.stringify(resource),
'muteHttpExceptions': true
};
var response = UrlFetchApp.fetch(url, options);
Logger.log(response.getContentText());
}
}
您似乎已经做对了,但我要指出的是:
构建服务帐户时,指定作用域https://www.googleapis.com/auth/gmail.settings.basic'
并包括.setSubject(userEmail)