我一直在尝试使用App Maker制作应用程序的要求,它是目录应用程序,用户将打开该应用程序的主页,并且应该能够在同一OrgUnit中查看其联系人列表他在G Suite中。
我了解默认人员或目录模型不显示orgUnitPath属性,因此我直接使用了AdminDirectory。
在应用程序设置中,我启用了AdminDirectory API。 我创建了一个名为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;
当我尝试预览该应用程序时,在控制台中出现以下错误:
E-2018年10月16日星期二11:36:43 GMT + 300-函数queryRecords必须 返回一个记录数组,但该数组包含一个元素 不是记录。错误:函数queryRecords必须返回一个 记录数组,但该数组包含的元素不是 记录。
E-2018年10月16日星期二11:36:43 GMT + 300-执行数据源查询 测试:(错误):函数queryRecords必须返回一个数组 记录,但是数组包含的元素不是记录。
E-2018年10月16日星期二11:36:43 GMT + 300-执行数据源查询 测试失败。
我想我还没有到达需要将返回的数组设置为数据源可以接受的正确格式的地步,所以我可以将其与之配合使用。
不确定是否已填写所有必需的详细信息。请让我知道任何缺失的信息,我将其放在此处!
在此方面,我将不胜感激。
致谢
答案 0 :(得分:1)
App Maker希望您为定义的数据源(在本例中为“测试”记录)返回Record对象的数组。
您可以将此脚本放入数据源服务器脚本中,也可以按照Markus的建议将其作为从数据源服务器脚本中调用的函数。
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;