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

相关推荐
布列瑟农的星空13 小时前
我们在低代码平台建设中的犯过的错误
低代码
NocoBase2 天前
NocoBase 本周更新汇总:增加工作流分类管理
低代码·开源·资讯
听说名字越长的就越牛逼2 天前
Mendix,在开发组件之前,需要了解的部分知识
前端·react.js·低代码
阿斯加德的IT3 天前
Power Automate: 从Excel 选择列,每200条生成一个CSV文件并保存在sharepoint文档库
低代码·excel
NocoBase3 天前
PostgreSQL 用户必看:6 款强大的无代码平台推荐
低代码·开源·资讯
kaixin_啊啊4 天前
手把手教你用Appsmith打造企业级低代码平台:从部署到性能调优实战
低代码
NocoBase4 天前
NocoBase v1.7.0 正式版发布
低代码·开源·资讯
马克凤梨4 天前
低代码平台中的设置器:让配置变得简单有趣
低代码
答案answer5 天前
Three.js实现低代码开发的两种模式
前端·低代码·three.js