Skip to content
开发文档
能力中心
应用市场
WebOffice
开发者后台

筛选记录

说明

筛选符合条件的记录

语法

表达式.Condition(Filters,FilterOp)

表达式:RecordRange

参数

参数名是否必需类型描述
FiltersFilter[]筛选数据的条件组, 条件组里每个Filter,可以包含多个筛选条件
FilterOp"And"/"Or"筛选数据条件组之间的关系,是同时满足还是只需要满足一条,默认值为And

Filter数据结构:

参数名是否必需类型描述
CriteriasCriteria[]筛选条件项组
Op"And"/"Or"筛选条件项组之间的关系,是同时满足还是只需要满足一条,默认值为And

Criteria 中筛选规则(大小写不敏感):

枚举值描述
Equals等于
NotEqu不等于
Greater大于
GreaterEqu大等于
Less小于
LessEqu小等于
GreaterEquAndLessEqu介于(取等)
LessOrGreater不介于(不取等)
BeginWith开头是
EndWith结尾是
Contains包含
NotContains不包含
Intersected指定值
Empty为空
NotEmpty不为空

各筛选规则独立地限制了values数组内最多允许填写的元素数,当values内元素数超过阈值时,该筛选规则将失效。“为空、不为空”不允许填写元素;“介于”允许最多填写2个元素;“指定值”允许填写65535个元素;其他规则允许最多填写1个元素 values[]数组内的元素为字符串时,表示文本匹配。目前还支持对日期进行动态筛选,此时values[]内的元素需以结构体的形式给出:

const dateValue = {"dynamicType": "lastMonth","type": "DynamicSimple"}
Criteria("@日期", "Equals", [dateValue])

上述示例对应的筛选条件为“等于上一个月”。 要使用日期动态筛选,values[]内的结构体需要指定"type": "DynamicSimple",当"op"为"equals"时,"dynamicType"可以为如下的值(大小写不敏感):

枚举值描述
today今天
yesterday昨天
tomorrow明天
last7Days最近7天
last30Days最近30天
thisWeek本周
lastWeek上周
nextWeek下周
thisMonth本月
lastMonth上月
nextMonth次月

当"op"为"greater"或"less"时,"dynamicType"只能是昨天、今天或明天。

对不同字段类型,values会有不同的用法 联系人字段:

// value是一个结构体,指定type为 Contact, value 为用户id
const dateValue = {"type":"Contact", value:"user id"}

单/多选项字段:

// value是一个结构体,指定type为 SelectItem, value 为选项的ID
const dateValue = {"type":"SelectItem", value:"B"}

返回值

RecordRange

浏览器环境示例

javascript
async function example() {
  await instance.ready();
  const app = instance.Application;
  // 创建筛选条件criteria
  const Criteria = app.Criteria 
  const criterias = []
  criterias.push(await Criteria("@名称",  "Intersected", ["1"]))
  // 创建筛选列表filters
  const filters = []
  const filter = {Criterias: criterias, Op: "AND"}
  filters.push(filter)
  // 筛选记录
  const res = await app.ActiveSheet.Views(1).RecordRange.Condition(filters, "AND")
  console.log(res)
  // 操作记录,返回第一个筛选结果的记录ID
  await res.Item(1).Id
  // 删除记录
  await res.Item(1).Delete()
}

脚本编辑器 示例

javascript
function main() {
  // 创建筛选条件criteria
    const critera1 = Criteria("@名称", "Intersected", ["1", "999", "aaaa"])
    const critera2 = Criteria("@数量", "Equals", ["1"])
    const criterias = []
    criterias.push(critera1)
    criterias.push(critera2)
    // 创建filters
    const filters = []
    const filter = { Criterias: criterias, Op: "OR" }
    filters.push(filter)
    const res = Application.ActiveSheet.Views(1).RecordRange.Condition(filters, "AND")
    console.log(res.Value)
}
main()
回到旧版