List of all domain delegates and the delegated emails

25 views
Skip to first unread message

Michail Kotantakis

unread,
Jan 26, 2023, 6:32:38 PM1/26/23
to Google Apps Script Community
Hi team
I have 4 separate functions, to manage the delegate sin our domain with a service account.

createDelegate, deleteDelegate, getDelegate, listDelegate

All are working fine, but i would need to list all the delegates in the domain along with the delegated domain. Currently with the listDelegate i have to check fdor each email every time, not for all at once.

Could you have a look please and advise how should be modified?

Herby all the functions:
---------------------------------------------------------------------------------------------------------------
function getDelegate(userEmail, delegateEmail) {

var userEmail = "te...@test.com";
var delegateEmail = "te...@test.com";

  var service = getOAuthService(userEmail);
  var response = UrlFetchApp.fetch("https://www.googleapis.com/gmail/v1/users/" + userEmail + "/settings/delegates/" + delegateEmail, {
    "headers": {
      "Authorization": "Bearer " + service.getAccessToken()
    }
  });

  if (response.getResponseCode() == 200) {
    var delegate = JSON.parse(response.getContentText());
    Logger.log("Delegate details: " + JSON.stringify(delegate));
  } else {
    Logger.log("An error occurred while retrieving the delegate. Response code: " + response.getResponseCode());
  }

}
------------------------------------------------------------------------------------------------------------------------------
/**
 * Lists all delegates for a user
 * @param {string} userEmail - The email address of the user
 * @return {Object} - The list of delegates
 */
function listDelegates(userEmail) {
  var userEmail = " te...@test.com";
  try{
    var url = "https://www.googleapis.com/gmail/v1/users/" + userEmail + "/settings/delegates";
    var response = UrlFetchApp.fetch(url, {
      method: "GET",
      headers: {
        Authorization: "Bearer " + getOAuthService(userEmail).getAccessToken()
      }
    });
    var json = response.getContentText();
    var data = JSON.parse(json);
    if (data.delegates) {
      Logger.log(data.delegates);
      return data.delegates;

    }
  } catch (error) {
    Logger.log("listDelegates failed: " + error);
    throw error;
  }
}
---------------------------------------------------------------------------------------------------------------------
function createDelegate(userEmail, delegateEmail) {
  var userEmail = "te...@test.com";
  var delegateEmail = "te...@test.com";
  var service = getOAuthService(userEmail);

  // Create the delegate
  var delegate = {
    "delegateEmail": delegateEmail,
    "verificationStatus": "accepted"
  };

  var response = UrlFetchApp.fetch("https://www.googleapis.com/gmail/v1/users/" + userEmail + "/settings/delegates", {
    "method": "POST",
    "headers": {
      "Authorization": "Bearer " + service.getAccessToken(),
      "Content-Type": "application/json"
    },
    "payload": JSON.stringify(delegate)
  });

  if (response.getResponseCode() == 200) {
    Logger.log("Delegate created successfully.");
  } else {
    Logger.log("An error occurred while creating the delegate. Response code: " + response.getResponseCode());
  }
}
------------------------------------------------------------------------------------------------------------------------------------------
function deleteDelegate(userEmail, delegateEmail) {
  var userEmail = "te...@test.com";
  var delegateEmail = "te...@test.com";
  var service = getOAuthService(userEmail);

  var response = UrlFetchApp.fetch("https://www.googleapis.com/gmail/v1/users/" + userEmail + "/settings/delegates/" + delegateEmail, {
    "method": "DELETE",
    "headers": {
      "Authorization": "Bearer " + service.getAccessToken()
    }
  });

  if (response.getResponseCode() == 204) {
    Logger.log("Delegate deleted successfully.");
  } else {
    Logger.log("An error occurred while deleting the delegate. Response code: " + response.getResponseCode());
  }
}
Reply all
Reply to author
Forward
0 new messages