友情说明:AI提供的回答存在概率性正确,有时简单场景AI编写的脚本能顺利执行,复杂场景还是离不开人为经验辅助滴~
以下内容仅作执行思路分享哟
WPS开发平台内置AI
举个例子:如何写WPS Air Script脚本获取多维表格指定数据表的字段信息?
看到这个问题,小林的第一反应是打开浏览器进入WPS开放平台(指路链接:https://open.wps.cn/documents/app-integration-dev/guide/start/learn-map),直接问WPS AI ”WPS Air Script脚本如何编写获取多维表格指定数据的字段信息“
然后AI就会哐哐哐给你一个长长的答案
AI回答末端还附上问题拓展和相关文档链接,方便查看引用的知识进行核验
有点体验不太好的是,这个窗口太小没法移动和调整大小,历史会话没法归类和存档
而且点击相关文档链接会页面跳转失败,拿GetFields来说,点击链接后页面跳转的URL是https://open.wps.cn/documents/app-integration-dev/guide/dbsheet/Api/Sheet_GetFields
实际上正确的URL应该是https://open.wps.cn/documents/app-integration-dev/guide/dbsheet/Api/Api/Sheet/Methods/GetFields
(怎么感觉有股翻车的味道,希望哪天官方能修正下AI引用的文档链接吧ε-(´∀`; )
AI提供的回答如下:
我们先抽取方式一“使用GetFields()方法获取全部字段”进行验证,假设多维表数据表字段如图:
将方式一的脚本代码直接复制粘贴到脚本编辑器中(CV工程师登场o(^▽^)o
然后直接点击运行
其实有编程基础的看眼代码就不难判断,这个答案大概率是要翻车的
(因为窝的需求是如何写WPS Air Script脚本获取多维表格指定数据表的字段信息
说了要指定数据表,怎么可能连个数据表名称都不用写进去呢?!)
果不其然,翻车叻( ̄▽ ̄)
运行日志显示执行完毕,但字段名称、字段ID、字段类型内容都没有输出
显然不是一个符合需求的脚本哇
那该咋办呢?转头PUA下AI吧~
这次AI给的回答是
依旧CV一下试试效果
还是翻车了呢(耐心-1-1-1
都指定数据表了为什么还是不行
窝要让每个变量都现原形!!!console.log大法开!
从运行日志输出情况来看,其实是能获取到数据表信息的
但为什么没发打印字段信息,经验老手一眼可断定,变量取值写错了
那咋改呢?什么,你让我改?
不不不,派AI小弟出马
豆包先打个头阵吧
脚本代码和运行结果一股脑扔进去
眨眼间豆包就给出答案啦
来试试豆包给的答案吧,再次CV CV
哎哟,不错哟,脚本没报错一遍过~
总结下整体操作流程就是:
如果你需要编写WPS功能相关脚本
可以在WPS开放平台向WPS AI输入功能需求描述
此时WPS AI会提供一些如何调用对应接口或函数的方案
测试脚本执行情况,如报错可转向其他AI协助修改代码逻辑问题
能直接让其他AI如豆包写相关调用WPS API的脚本吗?
其实也不是不行,只不过豆包相对于WPS内置的AI,对WPS内部API调用相关方法或函数不够熟悉,大概率会假设一些不存在的函数来调用给方案交差,运行结果当然是报错啦
再举个栗子🌰:写一个WPS Air Script脚本获取指定数据表所有记录内容
豆包给的方案:
豆包给的方案执行情况,翻车
那来试试WPS AI吧
测试情况如下:
具体回答内容
| 📌 | 获取指定数据表所有记录内容的WPS AirScript脚本以下是获取指定数据表所有记录内容的完整脚本实现: 方法一:通过RecordRange获取全部记录function main() {
try {
// 1. 指定数据表名称
const sheetName = "你的数据表名称";
// 2. 获取指定数据表
const sheet = Application.Sheets(sheetName);
// 3. 获取数据表的所有记录范围
const recordRange = sheet.RecordRange;
// 4. 获取记录总数
const recordCount = recordRange.Count;
console.log(`数据表"${sheetName}"共有${recordCount}条记录`);
// 5. 遍历所有记录
for (let i = 1; i <= recordCount; i++) {
const record = recordRange.Item(i);
console.log(`记录${i}:`, record.Text); // 获取记录文本内容
// 如果需要获取特定字段值
// const fieldValue = record.Range(1,1).Text; // 获取第1列的值
}
} catch (error) {
console.error("执行出错:", error);
}
}
方法二:通过ActiveView获取记录(适用于当前视图)function main() {
try {
// 获取当前活动视图的记录范围
const recordRange = Application.ActiveView.RecordRange;
const recordCount = recordRange.Count;
console.log(`当前视图共有${recordCount}条记录`);
for (let i = 1; i <= recordCount; i++) {
const record = recordRange.Item(i);
console.log(`记录${i}:`, record.Text);
// 获取特定单元格值
// console.log(Application.ActiveView.RecordRange(i,1).Text); // 第i行第1列
}
} catch (error) {
console.error("执行出错:", error);
}
}
方法三:结合字段信息获取结构化数据function main() {
try {
const sheetName = "你的数据表名称";
const sheet = Application.Sheets(sheetName);
// 获取字段信息
const fields = sheet.GetFields();
const recordRange = sheet.RecordRange;
// 打印表头
let header = "";
for (let i = 0; i < fields.Count; i++) {
const field = fields.Item(i + 1);
header += `${field.Name}\t`;
}
console.log(header);
// 打印记录内容
for (let i = 1; i <= recordRange.Count; i++) {
let rowData = "";
for (let j = 1; j <= fields.Count; j++) {
const cellValue = recordRange.Item(i).Range(1, j).Text; // 获取第i行第j列的值
rowData += `${cellValue}\t`;
}
console.log(rowData);
}
} catch (error) {
console.error("执行出错:", error);
}
}
注意事项数据表名称区分大小写,需确保与多维表格中的名称完全一致
大量记录获取可能影响性能,建议分页处理
如果记录中包含附件等复杂类型,需要特殊处理
确保脚本有足够的权限访问目标数据表
在生产环境中建议添加更完善的错误处理机制
性能优化建议对于大型数据表,可以考虑以下优化方案: function main() {
try {
const sheetName = "大型数据表";
const sheet = Application.Sheets(sheetName);
const recordRange = sheet.RecordRange;
const batchSize = 100; // 每批处理100条
for (let i = 1; i <= recordRange.Count; i += batchSize) {
const end = Math.min(i + batchSize - 1, recordRange.Count);
console.log(`正在处理记录 ${i} 到 ${end}`);
for (let j = i; j <= end; j++) {
const record = recordRange.Item(j);
// 处理记录...
}
}
} catch (error) {
console.error("执行出错:", error);
}
}
相关文档: 查询记录列表
RecordRange
查询记录
快速入门
云文档 API
GetFields
GetFields.md
检索记录
获取数据库表字段信息
|
脚本执行结果如何?居然一遍过诶
总结下要点就是:想写 WPS 功能类脚本,可先问 WPS AI 出初稿,再用其他 AI 辅助优化代码逻辑。
公众号文章链接🔗:https://mp.weixin.qq.com/s/M5wuy9ER_9qqhRfdSTbiFg