Получить имена пользователей на основе их идентификатора электронной почты, используя Google App Script - PullRequest
1 голос
/ 17 апреля 2020

У меня есть проект для отправки почты нескольким пользователям, я написал сценарий для отправки нескольким пользователям электронной почты, используя сценарий приложения, но чтобы сделать почту более персонализированной, я хочу начать почту как «Привет, Абхишек Мехта»

Использование AdminDirectory.Users.get(userKey, {fields:'name'}) Я могу получить имена пользователей, но не знаю, как их перечислить на листе.

Другими словами, у меня 50 идентификаторов электронной почты и я хочу получить полное имя идентификатора электронной почты и вы хотите написать его в листе Google, используя Google App Script.

Запросить помощь у сообщества.

Ответы [ 2 ]

2 голосов
/ 17 апреля 2020

name getUser () возвращает объект, вам нужно получить доступ к этому объекту, чтобы получить имя и фамилию пользователя.

Следующий скрипт получит всех пользователей в вашем домене ( если у вас есть права администратора), отсортированные по электронной почте и перечислите их на листе с именем Users

function listAllUsers() {
    var ss = SpreadsheetApp.getActiveSheet();
    var pageToken,
    page;
    var userInfo = []
    do {
        page = AdminDirectory.Users.list({
                domain: '---------',
                orderBy: 'email',
                maxResults: 500,
                pageToken: pageToken
            });

        var users = page.users;
        if (users) {
            for (var i = 0; i < users.length; i++) {
                var user = users[i];
                try {
                    userInfo.push([user.primaryEmail, user.name.givenName, user.name.familyName]);
                } catch (e) {
                    userInfo.push([user.primaryEmail, "", ""]);
                }
            }
        } else {
            Logger.log('No users found.');
        }
        pageToken = page.nextPageToken;
    } while (pageToken);
    var sheet = ss.getSheetByName('Users')
        sheet.getRange(2, 1, userInfo.length, userInfo[0].length).setValues(userInfo);
}

. Чтобы получить имена из списка пользователей, вы можете использовать следующий скрипт. Предполагается, что имена пользователей (адреса электронной почты) перечислены в столбце A, начиная со строки 2 и без разрывов.

В объекте name

  1. .givenName имеется 3 значения имя пользователя.
  2. .familyName имя пользователя
  3. .fullName - это имя и фамилия, разделенные пробелом

    function usersNames() {
    
    var ss = SpreadsheetApp.getActiveSheet();
    var data = ss.getRange('A2:A').getValues();
    var userNames = [];
    
    for (var i = 0; i < data.length; i++) {
        if (data[i][0]) {
            var names = AdminDirectory.Users.get(data[i][0]).name
    
                userNames.push([names.givenName, names.familyName]);
    
        } else {
            break;
        }
      }
    
     ss.getRange(2, 2, userNames.length, 2).setValues(userNames)
    
    }
    
0 голосов
/ 21 апреля 2020

Вот сценарий для того же самого.

Идентификатор файла = Пример жирным шрифтом (https://docs.google.com/spreadsheets/d/ 1JeNKU366pzsdH-Pg9EsjKENLO0orqunduoOGJJMnKjM4 / edit # gid = 630237)

Имя файла = Имя листа под основной электронной таблицей, например sheet1 или sheet2

`function getUserName() {

      var ss = SpreadsheetApp.openById("File ID");
      var sheet = ss.getSheetByName("File Name")
      var values = sheet.getDataRange().getValues()
      var fileArray = [["User Name"]]

      for(i=1; i <values.length; i++)
      {

        var userKey = values[i][2] // '2' = Cloumn C

        try{

          var status = "No Name Found"
          var status = AdminDirectory.Users.get(userKey, {fields:'name'})
          var fullname = status.name.fullName

          Logger.log(fullname)

          if (status != "No Name Found"){

            status = fullname

          }

        }

        catch (e) {

          Logger.log(e.message)
          var status = e.message

        }

        fileArray.push([status]) 

      }

      var range = sheet.getRange(1, 4, fileArray.length, 1).setValues(fileArray)

    }`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...