我正在使用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;
}
答案 0 :(得分:0)
由于您的问题缺少帮助我进行调试的信息,我无法真正说出您出现该错误的原因;不过,我确实了解您要实现的目标,这是我已采取的步骤:
1.创建目录模型并将其命名为“ persons”或任何您想要的名称。
2.在该模型内创建一个数据源,并将其命名为“ userDeptWorkers”或您喜欢的任何名称。
3.将此代码添加到数据源的查询构建器部分:
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”或您命名的表的表,然后预览该应用程序。您应该得到所需的东西。
将来,您可能会遇到更复杂的问题,如果是这种情况,我建议您对问题进行更具体的说明,即包括您正在做的屏幕截图,详细说明找到数据源(如果它们是同一模型的一部分),并且如果运行服务器脚本,则如何调用它。
希望此刻对您有所帮助!