Доступ к объектам в списке массивов - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь получить доступ к объектам массива с помощью javascript, арралист:

membersList:{
    "kind":"admin#directory#users",
    "users":[{"orgUnitPath":"/",
        "isMailboxSetup":true,
        "id":"1076823423424234",
        "isAdmin":false,
        "suspended":false,
        "isDelegatedAdmin":false,
        "isEnforcedIn2Sv":false,
        "etag":"\"npJcgsdfsadfsfsff\"",
        "ipWhitelisted":false,"changePasswordAtNextLogin":true,
        "customerId":"C01looera",
        "includeInGlobalAddressList":true,
        "lastLoginTime":"1970-01-01T00:00:00.000Z",
        "primaryEmail":"ilda.donofrio@domain.org",
        "isEnrolledIn2Sv":false,"kind":"admin#directory#user",
        "name":{"givenName":"ilda",
            "familyName":"donofrio",
            "fullName":"ilda donofrio"},
            "creationTime":"2018-06-10T11:56:45.000Z",
            "emails":[{"address":"ilda.donofrio@domain.org",
            "primary":true}],
            "agreedToTerms":true
            }],
        "etag":"\"npJcgsdfsadfsfsff/npJcgsdfsadfsfsff\"

    }

Я пытаюсь получить доступ к primary email из этого списка, для которого я написал код, т.е.

for (var j in membersList) {
       var member = membersList[j];
       Logger.log('member Email:' + member);
    }

, который просто возвращает меня

[18-06-12 15:39:55:982 EDT] member Email:admin#directory#users

[18-06-12 15:39:55:982 EDT] member Email:{"orgUnitPath":"/","isMailboxSetup":true,"id":"1076823423424234","isAdmin":false,"suspended":false,"isDelegatedAdmin":false,"isEnforcedIn2Sv":false,"etag":"\"npJcgsdfsadfsfsff\"","ipWhitelisted":false,"changePasswordAtNextLogin":false,"customerId":"C01looera","includeInGlobalAddressList":true,"lastLoginTime":"1970-01-01T00:00:00.000Z","primaryEmail":"ilda.donofrio@domain.org","isEnrolledIn2Sv":false,"kind":"admin#directory#user","name":{"givenName":"ilda","familyName":"donofrio","fullName":"ilda donofrio"},"creationTime":"2018-06-10T11:56:45.000Z","emails":[{"address":"ilda.donofrio@domain.org","primary":true}],"agreedToTerms":true}

[18-06-12 15:39:55:983 EDT] member Email:"npJcgsdfsadfsfsff/npJcgsdfsadfsfsff\"

Когда я попробовал с:

Logger.log('member Email:' + member.primaryEmail);

Его бросок:

[18-06-12 16:02:53:630 EDT] member Email:undefined
[18-06-12 16:02:53:630 EDT] member Email:undefined
[18-06-12 16:02:53:631 EDT] member Email:undefined

Есть ли способ извлечьзначение только primaryEmail с использованием скрипта?Я новичок в JavaScript и скриптах Google, поэтому прошу прощения, если это глупый вопрос.

Ответы [ 4 ]

0 голосов
/ 13 июня 2018

Единственный ответ, который сработал для меня в скрипте Google Apps, был:

for (var j in membersList) {
       var member = membersList[j];
       for (var k in member){        
         var user =  member[k];
         var memberEmail = user.primaryEmail;
         var lastLoginTime = user.lastLoginTime;
       } 
    }
    Logger.log('member Email:' + memberEmail);
    Logger.log('last Login Time:' + lastLoginTime);

Я попробовал все методы, которые были опубликованы здесь, но безуспешно, но, как цитировал @AllenG, мне просто пришлось перебиратьвсе users в объекте списка участников.Большое спасибо за вашу помощь.

0 голосов
/ 12 июня 2018

Вы можете использовать membersList.users[0].primaryEmail для доступа к основной электронной почте.

Кроме того, в последнем бите ("etag":"\"npJcgsdfsadfsfsff/npJcgsdfsadfsfsff\") последний \ выходит из строки, но не должен, поэтому попробуйте удалить ее..

var membersList = {
    "kind":"admin#directory#users",
    "users":[{"orgUnitPath":"/",
        "isMailboxSetup":true,
        "id":"1076823423424234",
        "isAdmin":false,
        "suspended":false,
        "isDelegatedAdmin":false,
        "isEnforcedIn2Sv":false,
        "etag":"\"npJcgsdfsadfsfsff\"",
        "ipWhitelisted":false,"changePasswordAtNextLogin":true,
        "customerId":"C01looera",
        "includeInGlobalAddressList":true,
        "lastLoginTime":"1970-01-01T00:00:00.000Z",
        "primaryEmail":"ilda.donofrio@domain.org",
        "isEnrolledIn2Sv":false,"kind":"admin#directory#user",
        "name":{"givenName":"ilda",
            "familyName":"donofrio",
            "fullName":"ilda donofrio"},
            "creationTime":"2018-06-10T11:56:45.000Z",
            "emails":[{"address":"ilda.donofrio@domain.org",
            "primary":true}],
            "agreedToTerms":true
            }],
        "etag":"\"npJcgsdfsadfsfsff/npJcgsdfsadfsfsff"

    }
    
console.log(membersList.users[0].primaryEmail);
0 голосов
/ 12 июня 2018

Чтобы получить доступ к первичной электронной почте, попробуйте использовать membersList["users"]["primaryEmail"]

0 голосов
/ 12 июня 2018

Вы должны выполнить итерацию по всем users в объекте списка участников, а затем получить primaryEmail каждого пользователя.В настоящее время вы перебираете все атрибуты объекта membersList (то есть ключи, один из которых users).

Например:

membersList['users'].forEach((user) => {
  Logger.log('member Email: ' + user['primaryEmail']);
}

способ итерации зависит от вас, я просто склонен использовать .forEach в JS.

...