期望的行为
我正在尝试获取通过 Power Automate 中的 Microsoft Form 上传的文件的文件属性。
研究
我尝试了多种来源的建议,例如:
- 如何使用 Power Automate 中的表达式从 JSON 对象获取数据(视频)
- 处理来自表单“文件上传”问题类型的文件
- 在 Azure 逻辑应用和 Power Automate 的表达式中使用函数的参考指南
我是一位相当有经验的开发人员,我熟悉变量类型(String
,Array
等Object
)以及如何使用点或括号表示法引用对象中的项目以及通过索引访问数组项目。
我也熟悉:
JSON.parse() 方法解析 JSON 字符串,构造字符串描述的 JavaScript 值或对象。
JSON.stringify() 方法将 JavaScript 对象或值转换为 JSON 字符串
并阅读了有关 Power Automate 的Parse JSON操作的信息
要引用或访问 JavaScript 对象表示法 (JSON) 内容中的属性,您可以使用 Parse JSON 操作为这些属性创建用户友好的字段或标记。这样,您可以在为逻辑应用指定输入时从动态内容列表中选择这些属性。对于此操作,您可以提供 JSON 架构或从示例 JSON 内容或有效负载生成 JSON 架构
但是我仍然很难获得我需要的价值观。
我试过的
01) 用于Parse JSON
访问响应体的属性:
02)运行 流程并查看Raw Outputs
:Parse JSON
{
"body": {
"responder": "me@domain.com",
"submitDate": "7/5/2021 7:03:26 AM",
"letters-and-numbers-here-1": "some text here",
"letters-and-numbers-here-2": "[{\"name\":\"File 01 Name.docx\",\"link\":\"https://tenant.sharepoint.com/sites/MySiteName/_layouts/15/Doc.aspx?sourcedoc=%7Bletters-and-numbers%7D&file=File%2001%20Name%20_Uploader%20Name.docx&action=default&mobileredirect=true\",\"id\":\"id-is-here\",\"type\":null,\"size\":20411,\"referenceId\":\"reference-id-is-here\",\"driveId\":\"drive-id-is-here\",\"status\":1,\"uploadSessionUrl\":null}]",
"letters-and-numbers-here-3": "[{\"name\":\"File 02 Name.docx\",\"link\":\"https://tenant.sharepoint.com/sites/MySiteName/_layouts/15/Doc.aspx?sourcedoc=%7Bletters-and-numbers%7D&file=File%2002%20Name%20_Uploader%20Name.docx&action=default&mobileredirect=true\",\"id\":\"id-is-here\",\"type\":null,\"size\":20411,\"referenceId\":\"reference-id-is-here\",\"driveId\":\"drive-id-is-here\",\"status\":1,\"uploadSessionUrl\":null}]",
"letters-and-numbers-here-4": "some other text here"
}
}
03. 尝试获取第一个字段的name
值。File Upload
我曾假设第一个Parse JSON
会递归地将所有值设置为 JSON 对象,但是看起来该File Upload
字段的值仍然是一个字符串。所以我想我必须在球场上做另一个Parse JSON
动作File Upload
。
内容:
body('Parse_JSON')?['letters-and-numbers-here-2']
示例 JSON 有效负载:
{
"letters-and-numbers-here-2": "[{\"name\":\"File 01 Name.docx\",\"link\":\"https://tenant.sharepoint.com/sites/MySiteName/_layouts/15/Doc.aspx?sourcedoc=%7Bletters-and-numbers%7D&file=File%2001%20Name%20_Uploader%20Name.docx&action=default&mobileredirect=true\",\"id\":\"id-is-here\",\"type\":null,\"size\":20411,\"referenceId\":\"reference-id-is-here\",\"driveId\":\"drive-id-is-here\",\"status\":1,\"uploadSessionUrl\":null}]"
}
这会产生错误:
[
{
"message": "Invalid type. Expected Object but got Array.",
"lineNumber": 0,
"linePosition": 0,
"path": "",
"schemaId": "#",
"errorType": "type",
"childErrors": []
}
]
因此,我尝试针对Object
该File Upload
字段中的第一个Array
,并尝试以下值作为Content
of Parse JSON 2
:
body('Parse_JSON')?['letters-and-numbers-here-2']?[0]
body('Parse_JSON')['letters-and-numbers-here-2'][0]
两者都会产生错误:
无法在“1”行和“9206”列的操作“Parse_JSON_2”输入中处理模板语言表达式:'模板语言表达式'body('Parse_JSON')['letters-and-numbers-here-2'][0 ]' 无法评估,因为无法选择属性 '0'。“字符串”类型的值不支持属性选择。请参阅 https://aka.ms/logicexpressions 了解使用详情。
问题
如何访问File Upload
字段属性?
作为参考,Microsoft Form 有 4 个类型的字段:
- 文本
- 文件上传(仅限 1 个文件)
- 文件上传(仅限 1 个文件)
- 选择
使用的连接器有:
, in ,body
返回的是:Get response details
Raw outputs
"body": {
"responder": "me@domain.com",
"submitDate": "7/5/2021 3:17:56 AM",
"lots-of-letters-and-numbers-1": "text string here",
"lots-of-letters-and-numbers-2": [{.....}],
"lots-of-letters-and-numbers-3": [{.....}],
"lots-of-letters-and-numbers-4": "text string here"
}