App Maker-尝试检索我部门中所有用户的列表时出现问题

时间:2018-09-28 16:41:25

标签: google-app-maker

我正在使用Google App Maker开发一些小应用程序,我想在应用程序启动时加载与我所在部门相同的用户。

我创建了一个名为“ Person”的数据源,该数据源进入目录,然后创建了另一个名为“ DepartmentMembers”的数据源,在其中放置了一个脚本,用于根据会话中活动用户的电子邮件查询目录并查找他的部门名称。然后使用另一个查询,我想根据该部门名称列出用户。

但是预览应用程序时出现以下错误:

E Fri Sep 28 19:26:53 GMT+300 2018 AssertionError: Assertion failed: DirectoryDao.isFilterSupported: Filtering on 'PrimaryOrganizationDepartment' is not supported.

E Fri Sep 28 19:26:53 GMT+300 2018 Executing query for datasource DepartmentMembers: (Error) : Assertion failed: DirectoryDao.isFilterSupported: Filtering on 'PrimaryOrganizationDepartment' is not supported.

E Fri Sep 28 19:26:53 GMT+300 2018 Executing query for datasource DepartmentMembers failed.

这是我的代码:

function getUserDeptWorkers()
{
  var result = [];
  var dept;
  var email = Session.getActiveUser().getEmail();
  var newQuery = app.models.Person.newQuery();
  newQuery.filters.PrimaryEmail._equals = email;
  var userRecords = newQuery.run();
  if (userRecords.length === 0) {
    // got no information for this user
      return [];
  } else {
    var user = userRecords[0];
    dept = user.PrimaryOrganizationDepartment;
  }

  var deptQuery = app.models.Person.newQuery();
  deptQuery.filters.PrimaryOrganizationDepartment._equals = dept;
  var coWorkers = deptQuery.run();
  if (coWorkers.length === 0)
  {
    return [];
  }


  result.push(coWorkers);
  return result;
}

1 个答案:

答案 0 :(得分:0)

由于您的问题缺少帮助我进行调试的信息,我无法真正说出您出现该错误的原因;不过,我确实了解您要实现的目标,这是我已采取的步骤:

1.创建目录模型并将其命名为“ persons”或任何您想要的名称。 enter image description here

2.在该模型内创建一个数据源,并将其命名为“ userDeptWorkers”或您喜欢的任何名称。 enter image description here

3.将此代码添加到数据源的查询构建器部分: enter image description here

var results = [];
var allUsers = query.run();
var user;
for(var i=0; i<allUsers.length; i++){
  if(allUsers[i].PrimaryEmail === Session.getActiveUser().getEmail()){
    user = allUsers[i];
    break;
  }
}

for(var k=0; k<allUsers.length; k++){
  if(allUsers[k].PrimaryOrganizationDepartment === user.PrimaryOrganizationDepartment){
    results.push(allUsers[k]);
  }
}

return results;


4.在测试页中,放置一个数据源为“ userDeptWorkers”或您命名的表的表,然后预览该应用程序。您应该得到所需的东西。

将来,您可能会遇到更复杂的问题,如果是这种情况,我建议您对问题进行更具体的说明,即包括您正在做的屏幕截图,详细说明找到数据源(如果它们是同一模型的一部分),并且如果运行服务器脚本,则如何调用它。

希望此刻对您有所帮助!