如何通过Power Automate从SharePoint Excel列表批量生成命名Excel文件?
可以用Power Automate完成这个任务,你的思路完全可行,具体实现步骤如下:
步骤1:编写Office Script提取功能名称数组
在存储测试功能列表的Excel文件中,新建一个Office Script,用来读取功能名称列的数据并返回一维数组。示例脚本如下:
function main(workbook: ExcelScript.Workbook): string[] { // 假设功能名称在"Sheet1"的A列,第1行为表头,数据从第2行开始 const targetSheet = workbook.getWorksheet("Sheet1"); const usedRange = targetSheet.getUsedRange(); const lastRow = usedRange.getLastRow().getRowIndex(); const nameRange = targetSheet.getRangeByIndexes(1, 0, lastRow, 1); // 行索引从0开始,对应第2行到最后一行 const nameValues = nameRange.getValues(); // 转换为一维数组并过滤空值 return nameValues.map(row => row[0] as string).filter(name => name.trim() !== ""); }
保存脚本后记录好脚本名称,后续流会用到。
步骤2:搭建Power Automate流程
- 触发方式:选择「手动触发流」,或根据需求设置定时触发/文件更新触发。
- 获取功能名称数组:添加「Excel Online (Business)」的「运行脚本」动作,选择对应的SharePoint站点、功能列表Excel文件,再选择刚才创建的Office Script,执行后即可得到功能名称数组。
- 遍历功能名称:添加「应用到每一个」动作,将上一步输出的数组作为遍历对象。
- 基于模板生成并重命名文件:在「应用到每一个」内部添加「SharePoint」的「复制文件」动作:
- 源文件选择你的Excel模板文件(需存储在SharePoint/OneDrive中)
- 目标文件夹选择新文件的存放路径
- 「新文件名」处使用动态内容里的「当前项」(即当前遍历的功能名称)加上
.xlsx后缀,格式为@{items('Apply_to_each')}.xlsx - 可选:勾选「如果已存在则覆盖」避免重复文件报错
- (可选)填充新文件内容:若需要给新文件添加对应功能的专属信息,可在「复制文件」后添加「Excel Online (Business)」的「运行脚本」动作,针对新生成的文件执行内容填充脚本。
关键注意事项
- 确保Power Automate使用的账号拥有目标SharePoint站点的读写权限,以及相关Excel文件的编辑权限。
- 若功能名称包含
/ \ : * ? " < > |等文件名禁用字符,需添加「替换文本」动作提前处理,比如将特殊字符替换为_。 - 测试阶段先选取少量功能名称验证流程,确认正常后再批量运行。
内容的提问来源于stack exchange,提问作者Andrea
相关产品推荐
相关产品推荐

