在许多组织中,创建包含最新数据的标准化文档既费时又容易出错。通过利用 Power Automate 从 SharePoint 列表中直接提取信息并将其注入到 Word 模板中,您可以省去手动复制粘贴的步骤,确保一致性,并加速文档生成流程。本文将演示如何构建一个流程,该流程检索列表项,将字段映射到 Word 模板中的占位符,并输出一份完整格式的文档------无缝衔接 SharePoint 数据与专业的 Word 报告。
前提:
为了演示的目的, 我仅在word模板里添加了一个文本类和一个图片类.
- Name=Title, Type= Plain Text Content Control, Title=mytitle.
- Name=Image, Type=Picture Content Control, Title=mypic.
在SharePoint, 如果列表包含多个图片列, 则需要多一层的循环来实现. 在此我只添加了一个图片列.
基本上有两种主要的方法来把列表的内容写入word模板.
- 使用 'Send an HTTP request to SharePoint'.
- 使用 '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 模板不仅可以节省时间,还能确保您的文档始终使用最新数据,从而减少错误。设置完成后,该流程无需人工干预,让您专注于更具战略性的工作。不妨在下一个项目中尝试一下,简化文档生成流程,保持团队协作。