WPS AirScript脚本合集(五):输入表名获取表ID、行记录ID及行记录所有字段的值
一、脚本逻辑
输入:表名
输出:表ID、行记录ID、行记录所有字段的值
二、程序代码
/**
* 根据表名获取表ID、行记录ID及行记录所有字段的值(AirScript实现)
* 需在WPS脚本编辑器中运行
* 参考官方文档:https://airsheet.wps.cn/docs/api/dbsheet/Field.html
*/
function getTableFieldInfo(tableName) {
// 获取所有表信息
const sheets = Application.Sheet.GetSheets();
//console.log(`所有数据表信息:`,sheets);
// 查找目标表
let tableId = null;
for (const sheet of sheets) {
if (sheet.name === tableName) {
tableId = sheet.id;
break;
}
}
// 表不存在处理
if (!tableId) {
throw new Error(`找不到表名为【${tableName}】的数据表`);
}
// 获取所有记录
let offset = null;
let allRecords = [];
do {
const response = Application.Record.GetRecords({
SheetId: tableId,
PageSize: 1000, // 推荐设置最大分页值
Offset: offset
});
// 处理API响应错误
if (!response || !response.records) {
throw new Error("获取记录失败,请检查网络连接或API权限");
}
allRecords = allRecords.concat(response.records);
offset = response.offset;
} while (offset);
return {
tableId: tableId,
allRecords: allRecords
};
}
// 使用示例
try {
const tableName = "产品信息表";
const result = getTableFieldInfo(tableName);
console.log(`表名: ${tableName}`);
console.log(`表ID: ${result.tableId}`);
result.allRecords.forEach((record, index) => {
console.log(`第 ${index + 1} 行记录 ID: ${record.id}`);
console.log(`第 ${index + 1} 行记录`, "字段值:", record.fields);
});
} catch (error) {
console.error("程序运行错误:", error.message);
}
代码解释
获取所有表信息:通过Application.Sheet.GetSheets()获取所有数据表的信息。
表名匹配逻辑:遍历所有数据表,通过name属性匹配目标表名,获取对应的表ID。
异常处理机制:当未找到匹配表时抛出明确错误信息,避免后续操作因无效ID导致API调用失败。
分页获取记录逻辑:使用Application.Record.GetRecords方法,通过循环不断获取记录,直到没有更多记录为止。
API响应验证:确保接口返回有效数据结构,避免因网络异常或权限问题导致后续操作出错。
结果返回结构:返回包含表ID和全量记录数组的对象。每条记录包含:
id:行记录唯一标识
fields:包含所有字段键值对的对象
使用示例:给出了一个示例,使用“产品信息表”进行测试,并将结果打印到控制台。
社区管理员