hello I would like to add and send as parameter on gmail settings. for all my users, and change this to make a default account to send mail. I know hot to do with the GUI, but I wold like to do with GAS. the code for know is jus ¿t testing for a specific user.
Reference for Gmail API
var JSON = {
"private_key": "-----BEGIN PRIVATE KEY-----\\n-----END PRIVATE KEY-----\n",
"client_email": "client..@project-id-XXXXX.gserviceaccount.com",
"client_id": "12345800",
"user_email": "mainaccount@dominio.com"
};
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(JSON.private_key)
.setIssuer(JSON.client_email)
.setSubject(JSON.user_email)
.setPropertyStore(PropertiesService.getScriptProperties())
.setParam('access_type', 'offline')
.setParam('approval_prompt', 'force')
.setScope('https://www.googleapis.com/auth/gmail.settings.sharing')
.setScope('https://www.googleapis.com/auth/gmail.settings.basic');
}
function createAlias() {
var userEmail = 'mainaccount@dominio.com';
var alias = {
alias: 'makealiasdefault@dominio.com'
};
alias = AdminDirectory.Users.Aliases.insert(alias, userEmail);
Logger.log('Created alias %s for user %s.', alias.alias, userEmail);
var service = getOAuthService();
service.reset();
if (service.hasAccess()) {
var url = 'https://www.googleapis.com/gmail/v1/users/'+userEmail+'/settings/sendAs'
var headers ={
"Authorization": 'Bearer ' + service.getAccessToken()
};
var options = {
'method':'post',
'headers': headers,
'method': 'GET',
'muteHttpExceptions': true
};
var response = UrlFetchApp.fetch(url, options);
}
Logger.log(response.getContentText());
var resource ={'sendAs':[
{'isDefault':true,
'verificationStatus':'accepted',
'sendAsEmail':alias.alias,
'treatAsAlias':true}]};
Logger.log(resource);
var sendas = Gmail.Users.Settings.SendAs.create(resource,alias.alias);
Logger.log(sendas);
}
function reset() {
var service = getOAuthService();
service.reset();
}
ANd I get an error Delegation denied for mainaccount@dominio.com
If i chagen this line var sendas = Gmail.Users.Settings.SendAs.create(resource,alias.alias); for this var sendas = Gmail.Users.Settings.SendAs.create(resource,userEmail); I get a different error
Access restricted to service accounts that have been delegated domain-wide authority
The domain-wide was made follow this guide Domain-wide Delegation
Some knows how to create an send as wiht this proccess? or if something is bad with the code!