1

期望的行为

  1. 使用 Microsoft Forms 上传文件
  2. 获取文件内容
  3. 在新位置创建新文件
  4. 删除原始文件

实际行为

我在第 2 步遇到错误:

"body": {
    "status": 404,
    "message": "File not found\r\nclientRequestId: yadda-yadda\r\nserviceRequestId: yadda-yadda"
}

我试过的

在 Power Automate 流程中,触发器是:

提交新响应时

接下来的动作是:

获取响应详细信息

最后Raw Outputs一个动作的本质是:

"body": {
    "responder": "me@domain.com",
    "submitDate": "7/5/2021 3:17:56 AM",
    "my-text-field-01":  "text string here",
    "my-file-upload-field-01":  [{.....}],
    "my-file-upload-field-02":  [{.....}],
    "my-text-field-02":  "text string here"
}

文件上传字段具有以下架构:

{
    "name": "My File Name_Uploader Name.docx",
    "link": "https://my-tenant.sharepoint.com/sites/my-team-site/_layouts/15/Doc.aspx?sourcedoc=%7B0F1C3107-32C9-4CEF-B4BA-87E57C9DC514%7D&file=My%20File%20Name_Uploader%20Name.docx&action=default&mobileredirect=true",
    "id": "01NSAULIQHGEOA7SJS55GLJOUH4V6J3RIU",
    "type": null,
    "size": 20400,
    "referenceId": "01NSAULISZJG7M56NSV5AIDUQFHG3BOBCH",
    "driveId": "letters-and-numbers-here",
    "status": 1,
    "uploadSessionUrl": null
}

奇怪的是,此对象中的id或值与在 SharePoint 文档库中查看文档属性时显示referenceId的 不对应:Document ID

在此处输入图像描述

无论如何,我可以在流程中使用这些表达式来定位上传的文件属性:

json(body('Get_response_details')?['random-letters-and-numbers'])[0]['name']  
json(body('Get_response_details')?['random-letters-and-numbers'])[0]['driveId']  
json(body('Get_response_details')?['random-letters-and-numbers'])[0]['id']  

我要采取的下一步行动是Get file content

看来这可以通过以下操作来完成:

SharePoint 连接器
获取
文件内容 使用路径获取文件内容

OneDrive for Business Connectors
获取
文件内容 使用路径获取文件内容

我想使用Get file content(因为它似乎比必须通过硬编码路径更具动态性)。

有几篇文章建议我传递给此操作的值,因为File ID应该是 and 的串联driveIdid即:

driveId.id

来源:
移动、重命名在 Microsoft 表单中提交的
文件 使用表单“文件上传”问题类型中的文件

但是,当我尝试以下操作时:

在此处输入图像描述

我得到错误:

"body": {
    "status": 404,
    "message": "File not found\r\nclientRequestId: yadda-yadda\r\nserviceRequestId: yadda-yadda"
}

问题

我应该传递什么Get file content作为File Identifier

编辑 1

看完这篇,或许File Identifier实际上指的是一个“文件路径”,即:

/Shared Documents/Apps/Microsoft Forms/My Form Name/Question/My File Name.docx

呃,我尝试了上面的路径File Identifier(通过使用 UI 手动选择文件)并且它有效 - 不确定如何动态创建它,因为传入动态文件名不起作用:

/Shared Documents/Apps/Microsoft Forms/My Form Name/Question/@{variables('file_upload_wor_document_name')}

编辑 2 最后一个代码片段的工作方式与File Identifier使用 SharePoint 的使用路径连接器获取文件内容时一样。

仍然id希望对 SharePoint/Power Automate/MS Graph 等中提到的所有不同类型以及原因进行任何澄清driveIdid被建议作为在某些地方使用的值。

我发现id在不同时间无法访问相关文件是有问题的,例如,删除文件操作需要File Identifier删除上传到 Microsoft Forms 的文件 - 而我无法从获取响应详细信息响应中访问该文件。

4

1 回答 1

0

通过首先获取文件元数据,您可能会找到所需的内容。在处理通过表单上传的文件时,我有时会使用以下步骤:

  1. 解析 JSON 以获取与上传文件相关的问题。
  2. 获取文件元数据(在我的示例中,使用路径)
  3. 现在你有了做你想做的事的细节。在我的示例中,在上传的 XLXS 文件中创建一个表以供其他用途。

示例:从 MS/Forms Upload 获取文件元数据

于 2021-08-25T16:20:13.747 回答