使用 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 脚本连接到更大的自动化解决方案。 选择任意选项以开始。 流随当前工作簿一起提供。
提示
还可以从单个脚本上的“ 更多选项 (...) ”菜单开始创建流。
Excel 连接器
Excel Online (Business) 连接器允许流访问 Excel 工作簿。 有两个操作调用 Office 脚本。
- 运行脚本。 这是用于存储在 OneDrive 默认位置的脚本的操作。
- 从 SharePoint 库运行脚本。 这是在团队的 SharePoint 网站中存储脚本时要使用的操作。
对于 “运行脚本” 操作,脚本位置始终位于 OneDrive 中。
使用 Power Automate 的 Office 脚本中的数据安全性
“运行脚本”操作为使用 Excel 连接器的用户提供了对工作簿及其数据的显著访问权限。 此外,进行外部 API 调用的脚本存在安全风险,如 Power Automate 的外部调用中所述。 如果管理员担心泄露高度敏感数据,他们可以关闭 Excel Online 连接器,或通过 Office 脚本管理员控制来限制对 Office 脚本的访问。
对于已在租户中为非托管设备启用条件访问策略的管理员,最佳做法是在非托管设备上禁用 Power Automate。 使用 Azure AD 条件访问策略控制对 Power Apps 和 Power Automate 的访问的博客文章中详细介绍了此过程。
脚本流中的数据传输
Power Automate 允许在流操作之间传递数据片段。 可以将脚本配置为接受所需的信息,并将所需的内容从工作簿返回到流。 数据作为静态值、 表达式或动态内容传递给脚本。 有关单个服务连接器的详细信息,请参阅 Power Automate 连接器文档。
使用以下文档详细了解如何向脚本传递数据以及从脚本传递数据。
- 通过 教程:自动保存工作簿中电子邮件中的内容 和 教程:基于电子表格数据每周发送电子邮件提醒来学习。
- 请尝试 自动化任务提醒 示例方案,查看操作中的所有内容。
- 有关更多使用方案和 TypeScript 技术详细信息,请阅读 在 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 脚本。