Afaik 目前在 App Maker 中没有内置方法来获取当前用户的全名,但是您可以通过将目录模型添加到您的应用程序来获取它。添加目录模型后,您有多种方式来提供用户的全名:
1 创建记录时将其保存到数据库中
// onCreate
var email = Session.getActiveUser().getEmail();
var directoryQuery = app.models.Directory.newQuery();
directoryQuery.filters.PrimaryEmail._equals = email;
var reporter = directoryQuery.run()[0];
record.reported_by = email;
record.reported_full_name = reporter.FullName;
record.Date = new Date();
然后在绑定中使用这个“reported_full_name”而不是“reported_by”。
- 优点 - 在 UI 上呈现多条记录时性能更好
- 数据库中的 cons 值最终可能会过时
2 使用计算模型并在本地模型和目录之间建立动态“虚拟关系”
- 优点 - 您将始终拥有实际数据
- 缺点 - 它会运行得更慢,更难维护和实施
3 在 UI 上加载数据源后查询服务器的全名
// widget binding
setFullName(widget, @datasource.item.reported_by)
// client script
setFullName(widget, email) {
google.script.run
.withSuccessHandler(function(fullName) {
widget.text = fullName;
})
.getFullName(email);
}
// server script
function getFullName(email) {
var directoryQuery = app.models.Directory.newQuery();
directoryQuery.filters.PrimaryEmail._equals = email;
var person = directoryQuery.run()[0];
return person.FullName;
}
- 优点 - 您将始终拥有实际数据
- 缺点 - UI 上的标签会闪烁,由于对服务器的大量请求,性能会更差