创建一个“自定义”;从「;使用GAS和API作为别名发送
您好,我想在gmail设置中添加并发送为参数。对于所有我的用户,并将其更改为使用默认帐户发送邮件。 我知道用GUI很热,但我想用气体。 know的代码是针对特定用户的jus?t测试 我得到一个错误,因为我的委托被拒绝了mainaccount@dominio.com 如果我查根这行var sendas=Gmail.Users.Settings.sendas.create(resource,alias.alias); 为此 var sendas=Gmail.Users.Settings.sendas.create(资源,用户电子邮件); 我得到一个不同的错误 访问权限限制为已被授予域范围权限的服务帐户 整个域都是按照此指南创建的创建一个“自定义”;从「;使用GAS和API作为别名发送,api,google-apps-script,alias,Api,Google Apps Script,Alias,您好,我想在gmail设置中添加并发送为参数。对于所有我的用户,并将其更改为使用默认帐户发送邮件。 我知道用GUI很热,但我想用气体。 know的代码是针对特定用户的jus?t测试 我得到一个错误,因为我的委托被拒绝了mainaccount@dominio.com 如果我查根这行var sendas=Gmail.Users.Settings.sendas.create(resource,alias.alias); 为此 var sendas=Gmail.Users.Settings.senda
有些人知道如何使用此过程创建发送?或者如果代码有问题 下面是一个从源代码中清理的工作示例。原始代码的一些问题:
- 这段代码似乎试图进行原始URLFACHAPP.fetch HTTP调用和使用Gmail库。Gmail库不是为服务帐户设计的,它只对当前用户有效,这不是你想要的,因此我删除了Gmail库,我只使用Url获取
- 只能调用setScope()一次,否则将覆盖原始作用域。如果要使用多个作用域,请在作用域之间使用带空格的字符串
- 我不太确定你想用AdminDirectory做什么,我已经完全删除了。如果要进行Admin SDK目录API调用以创建用户的别名电子邮件地址(接收邮件),则需要添加目录作用域
- 将您的服务帐户值命名为JSON是一个坏主意,因为它会覆盖应用程序脚本的JSON类。我已将变量重命名为服务帐户。为避免此类错误,最好使用特定的变量名
var服务\u账户={
“私钥”:“--开始私钥…”,
“客户电子邮件”:“sa-email@example.com",
“客户id”:“1234569343”,
“用户电子邮件”:useraccount@example.com"
};
函数getOAuthService(用户){
返回OAuth2.createService('服务帐户')
.setAuthorizationBaseUrl('https://accounts.google.com/o/oauth2/auth')
.setTokenUrl('https://accounts.google.com/o/oauth2/token')
.setPrivateKey(服务帐户.私钥)
.setIssuer(服务账户、客户邮箱)
.setSubject(服务\帐户.用户\电子邮件)
.setPropertyStore(PropertiesService.getScriptProperties())
.setScope('https://www.googleapis.com/auth/gmail.settings.sharing https://www.googleapis.com/auth/gmail.settings.basic')
}
函数createAlias(){
var userEmail=useraccount@example.com';
var别名=myalias@example.com';
var alias_name='alias User';
var service=getOAuthService();
service.reset();
if(service.hasAccess()){
var url='1〕https://www.googleapis.com/gmail/v1/users/me/settings/sendAs'
变量头={
“授权”:“承载人”+服务.getAccessToken(),
“接受”:“应用程序/json”,
“内容类型”:“应用程序/json”,
};
var资源={
“sendAsEmail”:别名,
“displayName”:别名\u名称
};
变量选项={
“头”:头,
'method':'POST',
“有效负载”:JSON.stringify(资源),
“muteHttpExceptions”:true
};
Logger.log(选项);
var response=UrlFetchApp.fetch(url,选项);
Logger.log(response.getContentText());
}
}
函数重置(){
var service=getOAuthService();
service.reset();
}
''由@JayLee提供的代码在我刚刚测试过的情况下工作正常。
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();
}