用Power Automate获取SharePoint文件内容

发布时间 2023-07-20 14:51:56作者: 不为人知的鹅妈妈

1.根据文件夹路径获取路径下所有文件内容

使用SharePoint连接器的“获取文件(仅属性)”操作,站点地址选SharePoint的默认站点,库名选择对应文档库,我这里把SharePoint集成到Dynamics365的实体附件,库名就是对应的实体名。仅限文件夹条目为 /entityname/relativeurl, entityname为实体名,relativeurl为文档的相对路径,在Dynamics365的文档位置实体中可查到。

 将查询到的结果转为json,json架构可以通过流的测试将上面步骤的输出结果下载下来,然后生成下面的架构。

{
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "@@odata.etag": {
                "type": "string"
            },
            "ItemInternalId": {
                "type": "string"
            },
            "ID": {
                "type": "integer"
            },
            "Modified": {
                "type": "string"
            },
            "Editor": {
                "type": "object",
                "properties": {
                    "@@odata.type": {
                        "type": "string"
                    },
                    "Claims": {
                        "type": "string"
                    },
                    "DisplayName": {
                        "type": "string"
                    },
                    "Email": {
                        "type": "string"
                    },
                    "Picture": {},
                    "Department": {
                        "type": "string"
                    },
                    "JobTitle": {
                        "type": "string"
                    }
                }
            },
            "Editor#Claims": {
                "type": "string"
            },
            "Created": {
                "type": "string"
            },
            "Author": {
                "type": "object",
                "properties": {
                    "@@odata.type": {
                        "type": "string"
                    },
                    "Claims": {
                        "type": "string"
                    },
                    "DisplayName": {
                        "type": "string"
                    },
                    "Email": {},
                    "Picture": {},
                    "Department": {},
                    "JobTitle": {}
                }
            },
            "Author#Claims": {
                "type": "string"
            },
            "OData__DisplayName": {
                "type": "string"
            },
            "{Identifier}": {
                "type": "string"
            },
            "{IsFolder}": {
                "type": "boolean"
            },
            "{Thumbnail}": {
                "type": "object",
                "properties": {
                    "Large": {
                        "type": "string"
                    },
                    "Medium": {
                        "type": "string"
                    },
                    "Small": {
                        "type": "string"
                    }
                }
            },
            "{Link}": {
                "type": "string"
            },
            "{Name}": {
                "type": "string"
            },
            "{FilenameWithExtension}": {
                "type": "string"
            },
            "{Path}": {
                "type": "string"
            },
            "{FullPath}": {
                "type": "string"
            },
            "{IsCheckedOut}": {
                "type": "boolean"
            },
            "{VersionNumber}": {
                "type": "string"
            }
        },
        "required": [
            "@@odata.etag",
            "ItemInternalId",
            "ID",
            "Modified",
            "Editor",
            "Editor#Claims",
            "Created",
            "Author",
            "Author#Claims",
            "OData__DisplayName",
            "{Identifier}",
            "{IsFolder}",
            "{Thumbnail}",
            "{Link}",
            "{Name}",
            "{FilenameWithExtension}",
            "{Path}",
            "{FullPath}",
            "{IsCheckedOut}",
            "{VersionNumber}"
        ]
    }
}
View Code

结果内的FullPath为文件的完整路径,接下来就可以通过SharePoint的“使用路径获取文件内容”操作来获取文件的内容,下面的fileBody就是文件的base64。

 

 

另外,“获取文件(仅属性)”操作,如果文件路径不存在(例如Dynamics365中创建了实体记录,但没有上传文件,这个路径在SharePoint就还没有生成),获取文件会报错,我们可以在获取前校验一下这个文件夹存不存在,可以使用SharePoint的发送http到SharePoint操作。

 Uri为_api/web/GetFolderByServerRelativeUrl('/new_contract/[相对路径]/Exists。

如果客户端想要直接浏览文件,可以创建文件的共享链接,这样就可以通过url直接查看文件