Невозможно построить вычисленный источник данных из запроса списка пользователей в AdminDirectory - PullRequest
0 голосов
/ 16 октября 2018

Я пытался выполнить требование, при котором я создал приложение с помощью App Maker, это приложение-каталог, пользователь откроет домашнюю страницу для этого приложения и сможет увидеть список своих контактов в том же OrgUnitчто он входит в G Suite.

Я понимаю, что люди или модель каталога по умолчанию не показывают атрибут orgUnitPath, поэтому я использовал AdminDirectory напрямую.

В настройках приложения я включил AdminDirectoryAPI.Я создал новый рассчитанный источник данных с именем Test.Затем я добавил 3 источника в источник данных: primaryEmail, fllName и orgUnitPath.Затем в событиях я добавил следующий скрипт:

var usersArr = [];
var pageToken, page;
var conditions = {
    customer: 'my_customer',
    query: 'orgUnitPath=\'/OU_NAME\'',
    pageToken: pageToken 
}

do {
    page = AdminDirectory.Users.list(conditions);

    for (var i=0;i<page.users.length;i++)
    {
        console.log(page.users[i].orgUnitPath);
        usersArr.push(page.users[i].primaryEmail,page.users[i].name.fullName,page.users[i].orgUnitPath);

    }

    //page.users.forEach(function(user) {
        //usersArr.push(user.primaryEmail, user.name.fullName, user.orgUnitPath);
    //});

    if (page.nextPageToken) {
        conditions.pageToken = page.nextPageToken;
    }
} while (page.pageToken);

console.log(usersArr.length);
console.log(usersArr);
return usersArr;

Query event for the datasource

Когда я пытаюсь просмотреть приложение, я получаю следующую ошибку в консоли:

E - Вт 16 окт. 11:36:43 GMT + 300 2018 - Функция queryRecords должна возвращать массив записей, но этот массив содержит элемент, который не был записью.Ошибка: функция queryRecords должна возвращать массив записей, но этот массив содержал элемент, который не был записью.

E - Вт 16 октября 11:36:43 GMT + 300 2018 - Выполнение запроса для источника данных Test: (Ошибка): функция queryRecords должна возвращать массив записей, но этот массив содержал элемент, который не был записью.

E - Вторник, 16 октября 11:36:43 GMT + 300 2018 - Выполнение запросаПроверка источника данных не удалась.

Мне кажется, я не понимаю, когда мне нужно преобразовать возвращаемый массив в надлежащий формат, чтобы он мог быть принят источником данных, чтобы я мог использовать его вместе с ним.

Не уверен, если я все необходимые данные поместил ... Пожалуйста, дайте мне знать о любой недостающей информации, и я оставлю ее здесь!

Я был бы очень признателен за любую помощь или руководство по этому вопросу ...

С уважением

1 Ответ

0 голосов
/ 16 октября 2018

App Maker ожидает, что вы вернете массив из Record объектов для источника данных, который вы определяете (в данном случае записи "Test").

Вы можете поместить этот скрипт вСценарий сервера источника данных или функция, которая вызывается из сценария сервера источника данных, как предложил Маркус.

var usersArr = [];
var pageToken, page;
var conditions = {
    customer: 'my_customer',
    query: 'orgUnitPath=\'/OU_NAME\'',
    pageToken: pageToken 
}

do {
    page = AdminDirectory.Users.list(conditions);

    for (var i = 0; i < page.users.length; i++) {
        var userRecord = app.models.Test.newRecord();

        userRecord.primaryEmail = page.users[i].primaryEmail;
        userRecord.fullName = page.users[i].name.fullName;
        userRecord.orgUnitPath = page.users[i].orgUnitPath;

        usersArr.push(userRecord);
    }

    if (page.nextPageToken) {
        conditions.pageToken = page.nextPageToken;
    }
} while (page.pageToken);

return usersArr;
...