Получить статистику общей почты Google Script - PullRequest
0 голосов
/ 24 октября 2018

Мне нужно получить все сообщения с ярлыками для ведения статистики.У меня есть подсказка, потому что, когда я выполняю свою электронную почту, у меня не возникает никаких проблем, но цель - получить статистику общего аккаунта Gmail.Например, если я использовал следующий скрипт:

    /**
    * Lists the labels in the user's account.
    */
    function listLabels() {
      var response =  Gmail.Users.Labels.list('test@company.com');
    if (response.labels.length == 0) {
    Logger.log('No labels found.');
    } else {
    Logger.log('Labels:');
    for (var i = 0; i < response.labels.length; i++) {
      var label = response.labels[i];
      Logger.log('- %s', label.name);
      }
     }
   }

Где test@company.com - моя общая учетная запись, и я всегда получаю отказ.Я не уверен, что проблема с общей компанией или метод регистрации неверен.Дело в том, что если я делаю запись с моей общей электронной почтой, я действительно вижу свою личную учетную запись.

Спасибо за вашу помощь.

Обновление с новым кодом (данные JSON являются поддельными):

var JSON = {
    "private_key": "xxxx",
    "client_email": "mail_shared@test.com",
    "client_id": "client_id.apps.googleusercontent.com",
    "user_email": "personal@test.com"
};

function getOAuthService(user) {
    return OAuth2.createService("Service Account")
        .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')
        .setScope('https://www.googleapis.com/auth/gmail.labels');
}

function reset() {
    var service = getOAuthService();
    service.reset();
}

/**
    * Lists the labels in the user's account.
    */
    function listLabels() {
      var service = getOAuthService();
      service.reset();

    var response = Gmail.Users.Messages.list('mail_shared@test.com');
    if (response.labels.length == 0) {
    Logger.log('No labels found.');
    } else {
    Logger.log('Labels:');
    for (var i = 0; i < response.labels.length; i++) {
      var label = response.labels[i];
      Logger.log('- %s', label.name);
      }
     }
   }

Я пробовал следующие разные области:

https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/gmail.settings.basic https://www.googleapis.com/auth/gmail.readonly https://www.googleapis.com/auth/gmail.labels

...