Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建一个“自定义”;从「;使用GAS和API作为别名发送_Api_Google Apps Script_Alias - Fatal编程技术网

创建一个“自定义”;从「;使用GAS和API作为别名发送

创建一个“自定义”;从「;使用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

您好,我想在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(资源,用户电子邮件); 我得到一个不同的错误

访问权限限制为已被授予域范围权限的服务帐户

整个域都是按照此指南创建的


有些人知道如何使用此过程创建发送?或者如果代码有问题

下面是一个从源代码中清理的工作示例。原始代码的一些问题:

  • 这段代码似乎试图进行原始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();
}