Как создать подпись для основной учетной записи Gusite с помощью Gmail API с помощью учетной записи службы - PullRequest
1 голос
/ 16 апреля 2020

Я использую POST https://www.googleapis.com/gmail/v1/users/userId/settings/sendAs и могу добавить псевдоним с подписью в учетной записи Gsuite, однако с тем же кодом я пытаюсь обновить подпись для основной учетной записи Gsuite, но она не обновляется.

Пожалуйста, укажите, как применить логи c для обновления основной подписи учетной записи Gsuite с использованием служебной учетной записи

https://developers.google.com/gmail/api/v1/reference/users/settings/sendAs

var service_account = {
    "private_key":"-----BEGIN PRIVATE KEY-----VE=\n-----END PRIVATE KEY-----\n",
    "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();
}

1 Ответ

1 голос
/ 16 апреля 2020

Вам необходимо использовать метод Users.settings.sendAs: patch

  • В приложении Script вы можете сделать это следующим образом:
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)

...