使用 Power Automate 运行 Office 脚本

Power Automate 允许将 Office 脚本添加到更大的自动化工作流。 可以使用 Power Automate 执行一些操作,例如将电子邮件的内容添加到工作表的表中,或者在项目管理工具中基于工作簿注释创建操作。

重要

若要在 Power Automate 中使用 Office 脚本,必须具有 Microsoft 365 的业务许可证。 Office 365 企业版 E1 和 Office 365 F3 许可证可以将脚本与 Power Automate 配合使用,但不能直接在 Excel 中使用 Power Automate 集成。

提示

想要在不连接到其他应用的情况下自动运行脚本? 使用 脚本计划 功能。

入门

如果你不熟悉 Power Automate,建议访问 Power Automate 入门。 可以在此处详细了解所有可用的自动化可能性。 此处的文档重点介绍了 Office 脚本如何与 Power Automate 配合使用,以及如何帮助改进 Excel 体验。

分步教程

Power Automate 和 Office 脚本有三个分步教程。 这些说明如何组合自动化服务并在工作簿和流之间传递数据。

从 Excel 创建流

可以使用各种流模板在 Excel 中开始使用 Power Automate。 在“ 自动 ”选项卡下,选择“ 自动执行任务”。

功能区中的“自动执行任务”按钮。

这会打开一个任务窗格,其中包含多个选项,开始将 Office 脚本连接到更大的自动化解决方案。 选择任意选项以开始。 流随当前工作簿一起提供。

显示流模板选项的任务窗格,例如“计划 Office 脚本在 Excel 中运行,然后发送电子邮件”和“收到Microsoft Forms响应时在 Excel 中运行 Office 脚本”。

提示

还可以从单个脚本上的“ 更多选项 (...) ”菜单开始创建流。

Excel 连接器

Excel Online (Business) 连接器允许流访问 Excel 工作簿。 有两个操作调用 Office 脚本。

对于 “运行脚本” 操作,脚本位置始终位于 OneDrive 中。

运行脚本操作,其中包含显示位置为“OneDrive for Business”、文档库为“OneDrive”、文件为“daily-readings.xlsx”且脚本名为“格式化表”的已完成字段。

使用 Power Automate 的 Office 脚本中的数据安全性

“运行脚本”操作为使用 Excel 连接器的用户提供了对工作簿及其数据的显著访问权限。 此外,进行外部 API 调用的脚本存在安全风险,如 Power Automate 的外部调用中所述。 如果管理员担心泄露高度敏感数据,他们可以关闭 Excel Online 连接器,或通过 Office 脚本管理员控制来限制对 Office 脚本的访问。

对于已在租户中为非托管设备启用条件访问策略的管理员,最佳做法是在非托管设备上禁用 Power Automate。 使用 Azure AD 条件访问策略控制对 Power Apps 和 Power Automate 的访问的博客文章中详细介绍了此过程。

脚本流中的数据传输

Power Automate 允许在流操作之间传递数据片段。 可以将脚本配置为接受所需的信息,并将所需的内容从工作簿返回到流。 数据作为静态值、 表达式或动态内容传递给脚本。 有关单个服务连接器的详细信息,请参阅 Power Automate 连接器文档

使用以下文档详细了解如何向脚本传递数据以及从脚本传递数据。

示例

以下屏幕截图显示了每当提交对表单的新响应时触发的 Power Automate 流。 流运行一个脚本,该脚本将表单中的满意度值添加到表中。 当前平均满意度将作为电子邮件返回并发送。

显示示例流的 Power Automate 流编辑器。

脚本 main 的 函数将新的满意度值指定为 () newData 的输入参数。 该脚本从表中返回平均满意度值。

function main(workbook: ExcelScript.Workbook, newData: string): number {
  // Add the new data to the table.
  const table = workbook.getTable("SurveyTable");
  table.addRow(-1, [newData]);

  // Get the current satisfaction total.
  const satisfactionColumn = table.getColumnByName("Current Satisfaction");
  const values = satisfactionColumn.getRangeBetweenHeaderAndTotal().getValues();
  let total = 0.0;
  values.forEach((value) => {
    total += value[0] as number;
  });

  // Return the average satisfaction.
  return total / values.length;
}

注意

脚本参数的类型为 string ,因为这是 Forms 操作为所有值返回的类型。

Office 脚本示例和方案中查找包含分步演练的完整示例。 许多人在 Power Automate 流中心使用 Office 脚本。

另请参阅