Creates a custom “from” send-as alias with GAS and APIs

前端 未结 1 1763
鱼传尺愫
鱼传尺愫 2021-01-22 05:49

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 G

相关标签:
1条回答
  • 2021-01-22 06:29

    Below is a working example cleaned up from your source. A few issues with your original code:

    • The code seems to be trying to both make the raw UrlFetchApp.fetch HTTP call and use the Gmail library. The Gmail library is not designed to work with service accounts, it will only work against the current user which is not what you want, thus I've removed the Gmail library and I'm only using the Url Fetch.
    • You can only call setScope() once otherwise you overwrite the original scopes. If you have more than one scope to use, use a string with spaces between scopes.
    • I'm not really sure what you were trying to do with AdminDirectory, I've removed that entirely. If you want to make Admin SDK Directory API calls to create the alias email address for the user (receive mail) you'll need to add Directory scopes.
    • Naming your service account values to JSON is a bad idea as it overrides the JSON class of Apps Script, I've renamed the variable to service_account. Always a good idea to be specific with your variable names to avoid these kind of errors.
    var service_account = {
        "private_key": "-----BEGIN PRIVATE KEY...",
        "client_email": "sa-email@example.com",
        "client_id": "1234569343",
        "user_email": "useraccount@example.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(service_account.private_key)
            .setIssuer(service_account.client_email)
            .setSubject(service_account.user_email)
            .setPropertyStore(PropertiesService.getScriptProperties())
            .setScope('https://www.googleapis.com/auth/gmail.settings.sharing https://www.googleapis.com/auth/gmail.settings.basic')
    }
    
    function createAlias() {
      var userEmail = 'useraccount@example.com';
      var alias = 'myalias@example.com';
      var alias_name = 'Alias User';
    
      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,
          'displayName': alias_name
          };
    
        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();
    }
    

    '''

    0 讨论(0)
提交回复
热议问题