多维表里的GetRecords一定要注意检查offset

wils

创作者俱乐部成员

曾有朋友问,在多维表里,如何去重一个数据表,后插入另一个数据表

https://bbs.wps.cn/topic/45271

当时我的回答既没有检查offset,又没有考虑逐条插入太慢

当时没注意文档里的注意事项,每次请求最多返回100条,所以如果不检查offset很容易导致GetRecords返回的数据不完整。。。

🔔

function main(){

const d = new Set()

let o

do {

const s = Application.Record.GetRecords({SheetId: 42, Offset: o})

for (const i of s.records) {

d.add(i.fields['文本'])

}

o = s.offset

} while (o)

const ret = []

for (let i of d.keys()) {

ret.push({"fields":{"文本": i}})

}

Application.Record.CreateRecords(43, ret)

}

main()

修改后的代码:

  • 用d去重

  • 用o记录offset,每次GetRecords之后检查o,除非undefined才能继续

  • 先将结果写入ret数组,之后一次写入表,否则逐条写入特别慢

海南省
浏览 88
收藏
1
分享
1 +1
2
+1
全部评论 2
 
这个写法有点老了,可以学习多维表格新版API
· 北京
1
回复
wils

创作者俱乐部成员

感谢提醒 刚看了文档,是指RecordRange的写法吗
· 海南省
回复