You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 22:10:22