练习 - 将文件上传到 SharePoint 文档库

已完成

可以使用 Power Apps 和简单的 Power Automate 流将文件保存到 SharePoint 文档库。 在本单元中,我们将通过实操练习来学习如何做到这一点。 此方法包括使用附件控件(来自窗体控件)和 Power Automate 流将文件发送到 SharePoint 文档库。

简介

我们要做的是使用附件控件将文件加载到 Power Apps 中。 然后,我们使用一个简单的 Power Automate 流提取名称和文件内容并将其写入 SharePoint。 最后,我们将指向文件的链接传回 Power Apps,才能在浏览器中打开保存的文件。

要开始使用这种方法,首先确定文件保存到的 SharePoint 文档库。 您还需要一个可以临时连接到应用的 SharePoint 列表,以便我们可以向应用添加编辑窗体。 我们必须使用列表,因为这是获取附件控件的方式;文档库无法添加附件。

我们一起来执行以下步骤。

练习

  1. 转到 Power Apps Maker Portal,然后创建新的空白画布应用。

  2. 添加 SharePoint 作为数据源。 从新的空白画布屏幕中选择连接到数据添加数据按钮。

  3. 选择数据源弹出窗口中,找到并选择 SharePoint

    注意

    如果您不熟悉 SharePoint,请参考关于创建 SharePoint 站点并将其与 Power Apps 结合使用的这个模块。 Power Apps 和 SharePoint 入门。

  4. 在屏幕右侧显示的连接到 SharePoint 站点面板中,选择您的 SharePoint 站点,或者在 URL 输入字段中输入站点 URL(SharePoint 主页的 URL)。

  5. 选择列表面板中,同时选择要用于应用的列表和文档库,然后选择连接。 请记住,仅使用列表,以便我们可以使用包含附件的窗体控件,因此应当选择包含有限列的较小列表,以获得最佳结果。 继续之前,应用现在应在数据选项卡中显示两个项目:一个 SharePoint 文档库和一个 SharePoint 列表。

添加所需控件

  1. 选择插入编辑窗体,将>编辑窗体插入到应用。

  2. 要将表单连接到 SharePoint 列表,请查看屏幕右侧的“属性”面板,从数据源下拉列表中选择您的 SharePoint 列表。

  3. 编辑窗体控件中,找到并选择附件控件。 不需要整个数据卡片,只需要使用附件控件本身。 在树视图中,附件控件的名称左侧有一个以 DataCardValue 开头的小回形针图标。 复制附件控件。

  4. 现在,将在您的画布屏幕上粘贴附件控件,位于窗体控件外部。 可以看到您的应用显示错误。 这是由于您将该控件的副本粘贴到了该控件集成的窗体外部。 我们将在稍后修复这一问题。

  5. 从应用中选择和删除编辑窗体控件,但不选择和删除刚刚粘贴的附件控件。 我们仅添加了“编辑窗体”控件,以便复制“附件”控件,之后我们就不再需要它了。 此时,您还可以从数据源中删除 SharePoint 列表。 您不再需要它。

  6. 让我们来修复附件控件中的错误。 先重设大小,然后将其放在屏幕右上角。 我们需要更正控件属性中的一些错误,因为它的行为仍然和在窗体控件中时一样。 对属性做出以下更改后,控件将不会出现任何错误:

    Items - 删除 Parent.Default 并将其留空

    BorderColor - 删除条目并将其设置为 Color.Black(或恰当颜色)

    Tooltip - 删除 Parent.Default 并将其留空

    DisplayMode - 删除 Parent.Default 并将其设置为 DisplayMode.Edit

  7. 将附件控件的名称更改为有意义的名称,例如 AttachmentControl。 (在下面的公式中,使用名称 AttachmentControl。)

  8. 此时,您可以预览附件控件的功能。 将应用置于预览模式下,然后在附件控件中选择附加文件选项。 您可以从计算机中选择一个文件或图像并将其添加到附件中。 将应用移出预览模式。

创建流

  1. 现在,我们已经有了所需控件,让我们来创建 Power Automate 流。 我们可以在 Power Apps 中完成整个过程,具体做法是选择左侧导航栏上的 Power Automate 按钮,调出 Power Automate 面板。

  2. 从 Power Automate 面板中,选择创建新流

  3. 创建您的流弹出窗口,选择 + 创建流

  4. 创建您的流画布随即出现,显示以 Power Apps 为触发器的无标题流。 选择 PowerApps (V2) 操作,然后选择 + 添加输入

    “创建您的流”的屏幕截图,其中显示“SharePoint 创建文件”操作的“选择操作”搜索结果。

  5. 选择文件作为输入的类型。 这就是触发器所需的全部操作。

  6. 选择 + 新建步骤图标以添加其他步骤。

  7. 选择操作对话框中,搜索并选择 SharePoint 创建文件操作。

    PowerApps(V2) 的屏幕截图,其中显示了“SharePoint 创建文件操作”的“选择操作”搜索结果。

  8. 插入创建文件操作后,需要填写四个必需条目。 对于站点地址,从下拉列表中选择站点地址。 应该就是您将文档库附加到应用的那个 SharePoint 站点。

  9. 请注意,对于文件夹路径,提示消息会告知您必须从现有库开始。 字段右侧会出现一个文件夹图标。 您可以选择该图标,然后查找并选择要将文件保存到的文件夹。

  10. 首先,我们将插入 File Content,因为 Power Apps 触发器将其作为动态内容提供。 将光标放在 File Content 输入字段中。 然后,从动态内容中,选择 File Content。 在将其插入 File Content 后,如果将鼠标悬停在 File Content 上,它将显示以下公式:

    triggerBody()['file']['contentBytes']

  11. 接下来,我们将创建文件名。 我们通过插入表达式来执行此操作。 将光标放入“文件名”字段中,然后从动态内容弹出窗口中选择“表达式”选项卡。 将以下公式输入到表达式公式输入字段中:

    triggerBody()['file']['name']

  12. 选择确定。 在创建文件步骤中,所有四个输入现在应该已有相应的值,而文件名输入会显示带有文件名的公式的 fx 输入。

    流的“创建文件”操作的屏幕截图,其中显示了文件名的公式。

  13. 此时,我们的流将从 Power Apps 获取文件内容(其中包括文件名),并在指定的 SharePoint 文档库中创建一个文件。 在此流的最后一部分,我们要将指向新建文件的链接返回到 Power Apps。 选择 + 新建步骤,添加其他操作。

  14. 选择操作输入字段中,键入 powerapps。 然后选择响应 PowerApp 或流

  15. 响应 PowerApp 或流操作中,选择 + 添加输出

  16. 选择文本

  17. 显示输入标题类型:FileLink

  18. 输入响应值中,选择一些文本和动态内容。 首先,为 SharePoint 站点输入主页地址。 它应该与流中创建文件步骤的地址相匹配(以 https 开头,以 SharePoint 站点名称结尾)。 之后,从“创建文件”步骤的动态内容中选择路径

    显示路径的“响应 Power Apps”或“流动态内容”的屏幕截图。

  19. 将流重命名为 SaveFileToSharePoint 等名称。

  20. 保存您的流并关闭 Power Automate 编辑器窗口。 Power Apps 保存流并将其列在 Power Automate 选项卡中,以便我们可以在应用中使用它。

完成应用

  1. 返回您的应用屏幕,选择您的附件控件。

  2. 转到 OnAddFile 属性。

  3. 开始在 OnAddFile 公式中键入流的名称。 然后,依次添加一个句点和“Run”,这样您的公式就类似于:SaveFileToSharePoint.Run,但请注意,当您添加一个左括号时,我们仍然需要在公式中添加更多内容。 请注意,我们的流需要如下输入:{file:Record}。

  4. 将“{file:”添加到您的公式,然后添加另一个花括号,并键入您的公式以匹配下面的模式。 我们将记录项定义为 contentBytes 和 name,我们的流将其作为完整记录传递到 Power Automate 流。

    SaveFileToSharePoint.Run({file:{contentBytes: Last(Self.Attachments).Value, name: Last(Self.Attachments).Name}})

    OnAddFile 中这些元素的字母大小写很重要,当您键入时,Power Apps 将自动建议正确的选项。 我们必须使用 Last 函数的原因是 Self.Attachments 是一个表,而我们的流只需要一条记录。 我们还使用了引用控件本身的 Self,而不必输入控件名称。

  5. 让我们修改公式以包含从流返回的“FileLink”。 为此,我们将在运行流之前设置一个变量,然后使用输出“filelink”作为变量数据。 对您的公式进行以下调整:

    Set(varFileLink, SaveFileToSharePoint.Run({file:{contentBytes: Last(Self.Attachments).Value, name: Last(Self.Attachments).Name}}).filelink);

    这将 varFileLink 的值设置为我们的流返回到 Power Apps 的属性“filelink”。

  6. 向应用添加一个按钮控件,并生成文本“查看文件”

  7. 生成新按钮的 OnSelect 属性:Launch(varFileLink)。 新按钮会将我们转到该文件,以便我们可以在浏览器中查看它。

测试应用

  1. 将应用置于预览模式,将文件附加到附件控件。 您可以从计算机中选择一个文件,也可以将文件拖放到附件控件中。 您应该立即看到操作开始。

  2. 选择查看文件按钮。 出现以下三种情况之一。 如果上传了图像,图像文件会在独立浏览器选项卡中打开。如果提交了文档或电子表格,它会在桌面或浏览器应用中打开该文件。 其他文件类型可能会下载到浏览器并为您提供打开文件的选项。

后续步骤(可选)

恭喜! 您已经创建了一个能够通过 Power Apps 将文件上传到 SharePoint 文档库的应用。 无需执行任何其他操作,但可以通过以下步骤将此功能提升到全新水平:

  1. 数据从流中返回后,您可以在应用中的其他任何位置使用该链接。

  2. 您可以使用指向 SharePoint 文档库的 Items 属性将库插入到应用中。 然后,您可以在库中的图像控件和 Image 属性的公式中使用该项目的缩略图,例如:ThisItem.Thumbnail.Small。 缩略图记录功能非常强大,提供多种大小:。 它可以描述几乎任何文件的可视部分。

  3. 您可以使用项目属性 LinkToItem 将您转到选定项目,类似于我们的“查看文件”按钮。 选择库控件并转到 OnSelect 属性。 输入 Launch(ThisItem.'Link to item')

  4. 将应用置于预览模式下并从您的库中选择一个项目来查看此功能。

总结

若要通过 Power Apps 将文件保存到 SharePoint 文档库,将附件控件与简单流结合使用是一种强大的方法。 您可以将此功能添加到应用中要保存文件的任何位置。 之所以要执行传递文件 contentBytes 和 name 的 Power Automate 步骤,是因为 Power Apps 需要将文件保存到 SharePoint 文档库中。