您如何在目录模型上使用query.filters.FulllName._contains

时间:2019-09-18 15:20:24

标签: google-apps-script google-app-maker

目标

如果要从目录模型中查询和筛选全名,该怎么做?可以使用filters.FullName._contains =吗?

我尝试过的东西

我已经在目录模型的服务器脚本中尝试过此操作。这将返回所有GSuite记录,很酷。

var gQ = app.models.GSuite.newQuery();
gQ.filters.FullName._contains = '';  // filter empty string
var recs = gQ.run();
return recs; // returns all records

将过滤器字符串更改为字符时,没有任何记录。

var gQ = app.models.GSuite.newQuery();
gQ.filters.FullName._contains = 'a';  // filter the letter a
var recs = gQ.run();
return recs; // returns - recs undefined 

问题

我分配给string的{​​{1}}有什么问题?

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

区分大小写的解决方案

此脚本使用自定义参数过滤目录模型,但不使用filters.FullName._contains =

相反,使用Javascript的search(),每个FullName都得到一个RegEx评估。 if (rec.FullName.search(eFilter) > -1))

目录模型的服务器脚本

var gQ = app.models.GSuite.newQuery();
var gD = gQ.run();

if (query.parameters.FilteredGSuiteEmail === null) {
  return gD; // return all records
}

var eFilter = query.parameters.FilteredGSuiteEmail;
console.info("eFilter: " + eFilter);

var recs = [];
gD.forEach(function(rec) {
  console.log("searchValue: " + rec.FullName.search(eFilter));
  //console.log("search: " + rec.FullName);
  if(rec.FullName.search(eFilter) > -1) {
    console.log("search: " + rec.FullName);
    var newRec = app.models.GSuite.newRecord();
    newRec.FullName = rec.FullName;
    newRec.PrimaryEmail = rec.PrimaryEmail;
    recs.push(newRec);    
  }
});
return recs;

我需要将过滤器字符串转换为不区分大小写的RegEx参数。

还有更好的方法吗?