Office Script使用forEach遍历Query对象时出现API找不到错误
Office Script遍历Query集合时API调用失败问题
问题现象
- 针对单个Query对象的Office Script可正常运行:
function main(workbook: ExcelScript.Workbook) { // 获取工作簿中所有Power Query查询 let query = workbook.getQuery("data"); console.log(`Query名称: ${query.getName()}, 已加载行数: ${query.getRowsLoadedCount()}, 加载目标: ${query.getLoadedTo()}, 是否加载到数据模型:${query.getLoadedToDataModel()}, 刷新日期: ${query.getRefreshDate()}`); }
- 参考官方示例编写的遍历Query集合的脚本无法运行:
function main(workbook: ExcelScript.Workbook) { // 获取工作簿中所有Power Query查询 let queries = workbook.getQueries(); // 遍历每个查询,记录最后刷新日期 queries.forEach(query => { console.log(`Query名称: ${query.getName()}, 已加载行数: ${query.getRowsLoadedCount()}, 加载目标: ${query.getLoadedTo()}, 是否加载到数据模型:${query.getLoadedToDataModel()}, 刷新日期: ${query.getRefreshDate()}`); }); }
错误信息:第7行:Query getName: 你尝试使用的API未找到,可能需更新Excel版本,详见文档。但单个Query脚本可正常运行,因此该错误信息不准确。
测试验证
执行以下代码时:
function main(workbook: ExcelScript.Workbook) { // 获取工作簿中所有Power Query查询 let queries = workbook.getQueries(); queries.forEach(query => { console.log(`Query名称: ${query}`); }); }
控制台每行输出一个对象:
Query名称: [object Object]
Query名称: [object Object]
IntelliSense识别对象类型为Query,即使显式指定类型(query: ExcelScript.Query)仍会触发相同错误。
补充信息
执行console.log(query);后,可看到对象内部属性:
{type: "Query", instance: Object, engine: Object} type: "Query" instance: Object m_contextBase: Object m_objectPath: Object m_context: Object m_isNull: false m_loadedTo: "ConnectionOnly" m_loadedToDataModel: true m_name: "data" m_refreshDate: Wed Apr 10 2024 14:01:58 GMT-0400 (Eastern Daylight Time) m_rowsLoadedCount: 44 m_error: "None" engine: Object
根据Query对象的官方文档,属性只能通过Get方法访问,但当前遍历集合得到的对象无法调用这些方法。
内容的提问来源于stack exchange,提问作者TheRizza
相关产品推荐
相关产品推荐

