我可以使用哪些操作通过 Azure Logic App 在 SharePoint Online 中创建文件夹?

Posted

技术标签:

【中文标题】我可以使用哪些操作通过 Azure Logic App 在 SharePoint Online 中创建文件夹?【英文标题】:Which action(s) can I use to create a folder in SharePoint Online via Azure Logic App? 【发布时间】:2017-12-06 01:56:49 【问题描述】:

正如问题标题所述,我正在逻辑应用程序中寻找适当的操作来创建文件夹。此操作将执行多次——根据业务规则,每个目录执行一次。在这些文件夹中不会创建任何文件,因为逻辑应用的目的是为用户的需要准备一个模板文件夹结构。

在官方文档中,我看到有create file、create item 和list folder 操作。他们建议可能也有创建文件夹的操作(我找不到)。

如果不存在这样的操作,我可能需要使用一些 SharePoint Online API,但这将是最后的解决方案。

【问题讨论】:

【参考方案1】:

我能够通过SharePoint - CreateFile 操作创建一个目录。通过文件创建操作的副作用创建目录绝对是一种肮脏的黑客攻击(顺便说一句,受a comment on MS suggestion site 启发)。此错误/功能未记录在案,因此在生产环境中依赖它可能不是一个好主意。

此外,如果我的问题需要在 SharePoint 中创建一个没有任何文件的目录,则需要使用 App Logic 中的一个额外步骤。确保使用Create File 操作提供的Id 删除文件。

如果您尝试在 preexisting TestTarget 文档库下创建一个名为 folderCreatedAsSideEffect 的目录,您的 JSON 可能如下所示。

"actions": 
    "Create_file": 
        "inputs": 
            "body": "@triggerBody()?['Name']",
            "host":  "connection":  "name": "@parameters('$connections')['sharepointonline']['connectionId']"  ,
            "method": "post",
            "path": "/datasets/@encodeURIComponent(encodeURIComponent('https://MY.sharepoint.com/LogicApps/'))/files",
            "queries": 
                "folderPath": "/TestTarget/folderCreatedAsSideEffect",
                "name": "placeholder"
            
        ,
        "runAfter": ,
        "type": "ApiConnection"
    ,
    "Delete_file": 
        "inputs": 
            "host":  "connection":  "name": "@parameters('$connections')['sharepointonline']['connectionId']"  ,
            "method": "delete",
            "path": "/datasets/@encodeURIComponent(encodeURIComponent('https://MY.sharepoint/LogicApps/'))/files/@encodeURIComponent(body('Create_file')?['Id'])"
        ,
        "runAfter": 
            "Create_file": [
                "Succeeded"
            ]
        ,
        "type": "ApiConnection"
    
,

【讨论】:

这描述了我可以使用的 REST API。 docs.microsoft.com/en-us/sharepoint/dev/apis/rest/…【参考方案2】:

正确,目前 SharePoint 连接器不支持文件夹管理任务。

因此,您目前的最佳选择是在 API 或函数应用程序中使用 SharePoint API 或客户端库。

【讨论】:

是否可以使用CreateFile 操作以不存在的文件夹为目标来创建文件夹作为副作用?还是会因为缺少目标文件夹而导致此类操作失败?我知道它既便宜又脏,但仍然比我认为的处理 API 更简单。 如果您有兴趣,我发布了一个基于肮脏黑客的解决方案。这使用了 SharePoint 本机连接器的错误操作。在我的项目所处的阶段(原型设计阶段),这是我可以负担得起的足够且简单的解决方案。不过对于生产来说不是很好。 我不愿接受我的老套回答。如果您有基于 SharePoint API 的解决方案的示例,那将是一大优势,并且肯定会让您的答案“更正确”。

以上是关于我可以使用哪些操作通过 Azure Logic App 在 SharePoint Online 中创建文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

Azure 架构师学习笔记-Azure Logic Apps- 自定义Logic Apps 调度

Azure 架构师学习笔记-Azure Logic Apps- Logic Apps调用ADF

使用变量值在 Azure Logic App 中设置 SQL 存储过程路径

Azure 架构师学习笔记-Azure Logic Apps-简介

Azure 架构师学习笔记-Azure Logic Apps-简介

使用托管标识从 Azure Logic 应用向 Azure Function 进行身份验证