我正在使用Google App Maker的用户选择器,它似乎只返回电子邮件地址。在使用用户选择器之前,您需要将目录模型添加到您已经完成的应用程序中。
我的问题是,有没有办法使用选定的电子邮件作为密钥并获取目录模型中的相应记录?
我有一些代码会为我正在寻找的3个值(userFullname,userPhone和userAddress)返回undefined
。
服务器脚本代码:
function getUserInfoByEmail(email) {
var userFullname;
var userPhone;
var userAddress;
console.log("serverCode - getUserInfoByEmail: " + email);
var query = app.models.Directory.newQuery();
query.filters.PrimaryEmail._equals = email;
var records = query.run();
if (records === null) {
console.log("serverCode - getUserByEmail() - records is null");
}
console.log("serverCode - getUserByEmail() - " + records.length);
for (var user in records) {
if (user === null) {
console.log("serverCode - getUserByEmail() - user is null");
}
console.log("serverCode - getUserByEmail() - user: " + user);
userFullname = user.FullName;
userPhone = user.PrimaryPhone;
userAddress = user.PrimaryAddress;
console.log("serverCode - getUserInfoByEmail - userPhone: " + userPhone);
console.log("serverCode - getUserInfoByEmail - userAddress: " + userAddress);
console.log("serverCode - getUserInfoByEmail - userFullname: " + userFullname);
}
}
null
检查不返回null,没有错误。
以下是控制台的输出:
Tue Nov 14 15:22:17 GMT-700 2017 clientCode - newValue: myemail@this.eml
Tue Nov 14 15:22:18 GMT-700 2017 serverCode - getUserInfoByEmail: myemail@this.eml
Tue Nov 14 15:22:18 GMT-700 2017 serverCode - getUserByEmail() - 1
Tue Nov 14 15:22:18 GMT-700 2017 serverCode - getUserByEmail() - user: 0
Tue Nov 14 15:22:18 GMT-700 2017 serverCode - getUserInfoByEmail - userPhone: undefined
Tue Nov 14 15:22:18 GMT-700 2017 serverCode - getUserInfoByEmail - userAddress: undefined
Tue Nov 14 15:22:18 GMT-700 2017 serverCode - getUserInfoByEmail - userFullname: undefined
欣赏任何指导和帮助。
答案 0 :(得分:0)
实际上,有两个问题
我正在使用Google App Maker的用户选择器,它似乎只返回电子邮件地址。
如果您希望用户选择器为您提供目录记录,则可以选中valueIsRecord
复选框。之后,您将能够通过widget.value
访问目录记录:
返回3个值未定义的代码
您无法在javascript中使用Array
(learn more)循环遍历for...in
(此构造将为您提供键,但不会为您提供值)。您可以使用forEach
(learn more)或旧学校for
循环(learn more)。
还有第三个选项:for...of
(learn more),但App Script的javascript实现不支持它。