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

Excel TypeScript自动化:如何触发手动保存?OneDrive文件刷新后无法保存

解决Power Automate中Excel查询刷新后无法自动保存的问题

问题背景

通过Power Automate自动化刷新存储在OneDrive中的Excel文件查询连接,流程执行显示成功,但文件在自动保存触发前就被关闭。尝试添加手动保存代码无效,设置分段延迟与保存操作在Power Automate中仍无法成功保存,但在Excel内手动运行脚本可正常工作。

使用过的错误代码示例:

async function delay(ms: number) {
 return new Promise(resolve => {
   const startTime = Date.now();
   let currentTime = startTime;
   while (currentTime - startTime < ms) {
     currentTime = Date.now();
   }
   resolve();
 });
}

async function main(workbook: ExcelScript.Workbook) {
 workbook.refreshAllDataConnections();
 await delay(6000);
 workbook.getAutoSave
 await delay(5000);
 workbook.getAutoSave
 await delay(5000);
 workbook.getAutoSave
 await delay(25000);
}

尝试过workbook.save(),但提示“save属性不存在于Workbook类型上”。

问题分析

  1. 无效的保存操作:workbook.getAutoSave仅用于获取自动保存状态,并非触发保存的方法,原代码中重复调用该语句无任何实际作用。
  2. 错误的延迟实现:原delay函数使用同步while循环阻塞线程,并非真正的异步延迟,可能导致脚本执行异常,影响后续自动保存流程。
  3. API误解:Excel Script中不存在workbook.save()方法,OneDrive/SharePoint上的Excel依赖自动保存机制,但Power Automate的脚本执行上下文特殊,需确保刷新完成后等待自动保存生效。

解决方案

1. 修正脚本代码

使用正确的异步延迟函数,确保自动保存开启,并等待刷新与自动保存完成:

// 正确的异步延迟函数,非阻塞线程
async function delay(ms: number) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function main(workbook: ExcelScript.Workbook) {
  // 确保自动保存功能开启
  if (!workbook.getAutoSave()) {
    workbook.setAutoSave(true);
  }

  // 刷新所有数据连接
  workbook.refreshAllDataConnections();

  // 根据数据量调整等待时间,确保刷新完成
  await delay(10000);

  // 等待自动保存同步到OneDrive
  await delay(5000);
}

2. Power Automate流程补充配置

在“运行脚本”动作之后,添加等待文件修改动作:

  • 设置等待条件为文件的“修改时间”发生变化
  • 等待超时时间设为1-2分钟,确保OneDrive完成文件同步

内容的提问来源于stack exchange,提问作者Koweaboo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 14:46:22