Сценарий Google Apps - как получить запрос AdminDirectory.Users.List? - PullRequest
1 голос
/ 05 марта 2020

Я использую GAS для создания контакта, где параметры функции формируют запрос, который используется в AdminDirectory.Users.List . Эта проблема возникает только при использовании параметров orgTitle и orgDepartment . Когда я копирую и вставляю вывод Logger вместо переменной q , запрос работает. Если бы я использовал переменную q, она не удалась.

function listAllUsersBase(name = null, familyName = null, givenName = null, orgTitle = 'Help Desk', orgDepartment = null) {
  
  var aQuery = 'query:\''
  
    if (name !== null){
    Logger.log('Name: ' + name);
    var aQuery = aQuery + 'name:' + name + ' ';
  } if (familyName !== null){
    Logger.log('familyName: ' + familyName);
    var aQuery = aQuery + 'familyName:' + familyName + ' ';
  } if (givenName !== null){
    Logger.log('givenName: ' + givenName);
    var aQuery = aQuery + 'givenName:' + givenName + ' ';
  } if (orgTitle !== null){
    Logger.log('orgTitle: ' + orgTitle);
    var aQuery = aQuery + 'orgTitle:\\\'' + orgTitle + '\\\' ';
    
  } if (orgDepartment !== null){
    Logger.log('orgDepartment: ' + orgDepartment)
    var aQuery = aQuery + 'orgDepartment:\\\'' + orgDepartment + '\\\' ';
  }
  
  var aQuery = aQuery + '\''
  var q = aQuery.toString();
  
  Logger.log(q);
 
  var pageToken;
  var page;
  do {
    page = AdminDirectory.Users.list({
      domain: 'yourdomain.com',
      query: q,
      orderBy: 'givenName',
      maxResults: 100,
      pageToken: pageToken
    });
    var users = page.users;
    if (users) {
      for (var i = 0; i < users.length; i++) {
        var user = users[i];
        Logger.log('%s (%s)', user.name.fullName, user.primaryEmail);
      }
    } else {
      Logger.log('No users found.');
    }
    pageToken = page.nextPageToken;
  } while (pageToken);
}

1 Ответ

1 голос
/ 05 марта 2020

Существует ряд проблем с вашим сценарием.

Во-первых, вам не нужно повторно объявлять переменную aQuery. Первое объявление var aQuery = ... достаточно для вашего варианта использования.

Второе, query не является допустимым полем для условия поиска, поэтому оно не требуется ( см. документацию со списком допустимых полей, доступных для условий поиска ). Чтобы уточнить, когда вы впервые объявляете переменную aQuery, вы инициализировали ее как var aQuery = 'query:\'';. Здесь query используется как поле в предложении поиска. Однако это недопустимый параметр в этом контексте.

В-третьих, позиция открывающих одинарных кавычек в значениях полей для orgTitle и orgDepartment неверны, открывающая экранированная одиночная кавычка должна предшествовать экранированная backsla sh.

Итак, вместо:

var aQuery = aQuery + 'orgTitle:\\\'' + orgTitle + '\\\' ';

у вас должно быть:

var aQuery = aQuery + 'orgTitle:\'\\' + orgTitle + '\\\' ';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...