Power Automate: 使用SharePoint列表填充Word模板

在许多组织中,创建包含最新数据的标准化文档既费时又容易出错。通过利用 Power Automate 从 SharePoint 列表中直接提取信息并将其注入到 Word 模板中,您可以省去手动复制粘贴的步骤,确保一致性,并加速文档生成流程。本文将演示如何构建一个流程,该流程检索列表项,将字段映射到 Word 模板中的占位符,并输出一份完整格式的文档------无缝衔接 SharePoint 数据与专业的 Word 报告。

前提:

为了演示的目的, 我仅在word模板里添加了一个文本类和一个图片类.

  1. Name=Title, Type= Plain Text Content Control, Title=mytitle.
  2. Name=Image, Type=Picture Content Control, Title=mypic.

在SharePoint, 如果列表包含多个图片列, 则需要多一层的循环来实现. 在此我只添加了一个图片列.

基本上有两种主要的方法来把列表的内容写入word模板.

  1. 使用 'Send an HTTP request to SharePoint'.
  2. 使用 'Get Item'.

我仅在此文中探索第一种.

1. 添加一个 'Manually trigger a flow'.

也可以添加别的触发器,比如当新纪录添加后触发.

2. 初始化变量来保存站点地址 (可选)

初始化变量来保存站点或者直接从列表中选择.

3. 添加 'Send an HTTP request to SharePoint'.

Site Address=mySite variable, use your own site.

Method: Get

Uri:

bash 复制代码
_api/web/lists/getbytitle('test/t')/items?$select=ID,Title,AttachmentFiles&$expand=AttachmentFiles

拆解下这个Uri:

_api/web/lists/getbytitle('test/t')/items
  • 这是针对 SharePoint REST 端点.
  • getbytitle('test/t') 意思是 "找到标题为test/t的列表."
  • /items 意思是 "返回列表中的所有项"
$select=ID,Title,AttachmentFiles
  • 默认情况下SharePoint会返回列表的所有列.
  • 使用 $select 你可以限制响应只返回你需要的列---此例为:
    • ID (列表项的唯一标识符),
    • Title (该列中存储的文本),
    • AttachmentFiles (指向每项的附件导航属性).
$expand=AttachmentFiles
  • 在SharePoint's REST API中, 像 AttachmentFiles 这样的字段不是简单的文本或数字 ,它们是导航属性(collection类).

  • 如果只使用 <math xmlns="http://www.w3.org/1998/Math/MathML"> s e l e c t = A t t a c h m e n t F i l e s ∗ 而不加 ∗ select=AttachmentFiles* 而不加 * </math>select=AttachmentFiles∗而不加∗expand, 你只会得到URI的引用或者附件的原数据而非文件的实际信息.

  • 添加 $expand=AttachmentFiles, 是告诉SharePoint:

    "当返回每个列表项时,获取完整的 AttachmentFiles 集合,这样我就可以在同一个 JSON 响应中看到文件名、URL 等."

4. 添加 'Apply to Each'

点击 fx , 添加公式并点击Add.

less 复制代码
body('Send_an_HTTP_request_to_SharePoint')?['d']?['results']

5. 添加 'Get file content using path'

这主要是针对Image列。

Site Address: mySite variable.

File Path:

ruby 复制代码
replace(
  first(items('Apply_to_each')?['AttachmentFiles']?['results'])?['ServerRelativeUrl'],
  '/sites/MySite',''
        )

简单说明一下:

获取当前项的第一个附件 (因为我只添加了一个image列),

读取完整的 ServerRelativeUrl (其包含 /sites/MySite ), 并且删除 /sites/MySite 前缀, 只保留相对路径,比如: /Lists/MyList/Attachments/123/Plan.docx.

如图:

6. 添加 'Populate a Microsoft Word template'.

Location: OneDrive for Business , 你也可以使用SharePoint的library.

Document Library: OneDrive

File: /PolulatedDocument.docx. 你可以手动选择word模板,也可以使用变量.

Mytitle: items('Apply_to_each')?['Title']. 点击 fx, 填写公式并点击Add.

Mypic: body('Get_file_content_using_path'). 点击 ⚡ 并选择 (如下图).

注:此处是我自己的模板.

7. 添加 'Create file'.

Site: mySite from the variable.

Folder Path: /Shared Documents. 我使用的是默认的文档集,我的站点:'MySite'.

File Name: {items('Apply_to_each')?['ID']}.docx. 我使用的是列表项的ID来作为文件名. 也可以使用时间戳或别的值(人员).

File Content: body('Populate_a_Microsoft_Word_template'), 点击 ⚡。

如下图:

你可以添加更多的步骤,比如把每个文档作为附件发送给不同的收件人.

最后,使用 Power Automate 自动从 SharePoint 列表填充 Word 模板不仅可以节省时间,还能确保您的文档始终使用最新数据,从而减少错误。设置完成后,该流程无需人工干预,让您专注于更具战略性的工作。不妨在下一个项目中尝试一下,简化文档生成流程,保持团队协作。

相关推荐
启扶农1 天前
lecen:一个更好的开源可视化系统搭建项目--全局对象使用--全低代码|所见即所得|利用可视化设计器构建你的应用系统-做一个懂你的人
低代码·数据访问·页面可视化·页面设计器·全局对象·公共属性·工具方法
启扶农2 天前
lecen:一个更好的开源可视化系统搭建项目--数据、请求、寄连对象使用--全低代码|所见即所得|利用可视化设计器构建你的应用系统-做一个懂你的人
低代码·数据对象·数据访问·页面可视化·页面设计器·请求对象·寄连对象
流之云低代码平台2 天前
提升PHP开发效率与质量的关键:工作流优化
低代码·php工作流优化方法·php代码优化·php开发流程优化·tpflow工作流引擎应用·gadmin企业级开发平台优势·软件开发速度提升
#六脉神剑2 天前
用myBuilder搭建企业级数字化业务系统架构
低代码·系统架构·低代码开发平台·数字化工具·mybuilder
晴虹2 天前
lecen:一个更好的开源可视化系统搭建项目--数据、请求、寄连对象使用--全低代码|所见即所得|利用可视化设计器构建你的应用系统-做一个懂你的人
前端·后端·低代码
流之云低代码平台3 天前
PHP工作流优化:让软件开发如虎添翼
低代码·php工作流优化方法·php工作流优化案例·php代码复用·php模块化开发·php自动化测试·php性能优化
启扶农3 天前
lecen:一个更好的开源可视化系统搭建项目--组件和功能按钮的权限控制--全低代码|所见即所得|利用可视化设计器构建你的应用系统-做一个懂你的人
低代码·权限控制·页面可视化·页面设计器·数据控制·组件控制·功能控制
AiFlutter3 天前
五、交互行为(01):按钮
flutter·低代码·低代码平台·aiflutter·aiflutter低代码
晴虹4 天前
lecen:一个更好的开源可视化系统搭建项目--组件和功能按钮的权限控制--全低代码|所见即所得|利用可视化设计器构建你的应用系统-做一
前端·后端·低代码
AiFlutter4 天前
四、动画图表(03):饼图
flutter·低代码·低代码平台·aiflutter·aiflutter低代码