计算已应用查询中的记录

Count records in already applied query

我知道获取记录总数的方法:

function countRecords(){
var records = app.models.BigQuery.newQuery().run(); 
  return records.length;

}

或从新查询中获取记录数

function queryModel(){

  var qq = app.models.BigQuery.newQuery();
  qq.clearFilters();
  qq.parameters.v1 = "GNa";
  qq.parameters.v2 = "TH";
  qq.where = "(document_name contains :v1) OR (document_name contains :v2)";
  var results = qq.run();
  return results.length;

}

但我需要的是服务器或客户端从应用查询中获取计数的方法(这似乎在使用数据源的不同页面上是持久的)。换句话说,我需要在不使用 "newQuery.run()" 的情况下写这个。 (我更喜欢客户端,所以我可以使用从我的表单创建的查询将它附加到小部件)。

query.items 只给出第一个分页标记的长度。

编辑,尝试这个,但它给出了循环引用错误:

将我的服务器端代码更改为:

function countRecords(query){
var records = query.run(); 
  return records.length;

}

我的按钮端代码为:

google.script.run
.withSuccessHandler(function(o){console.log("Success"+o);})
.withFailureHandler(function (e){console.log("Error"+e);})
.countRecords(widget.datasource.query);

错误是

Failed due to circular reference. at Popup1.Content.Panel2.Table1Panel.Table1.Button3.onClick:4:2

目前有效的是:

widget.datasource.items.length

我不得不将分页更改为 400 并且

我知道这不适用于大于 400 的集合,但这就是处理我当前用例的方法。