You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Data Factory复制SharePoint文件至Blob容器:仅获单个文件问题排查

SharePoint递归获取PDF并复制到Blob的配置修复

核心问题排查

当前管道只能取单个文件的原因有三个:

  • Get Metadata调用的API仅返回当前目录文件,未递归子文件夹
  • 复制活动硬编码取了第一个文件的ID,未遍历所有返回结果
  • 未添加PDF文件过滤规则

具体修复步骤

1. 调整Get Metadata的API URL,递归拉取所有PDF

把原URL替换为以下API地址,开启递归并过滤PDF格式文件:

https://cactuscompany.sharepoint.com/sites/cactuscompany/_api/web/GetFolderByServerRelativeUrl('/sites/mydatateam/Shared Documents/General/Global/the_data_I_need/')/Files?$filter=endswith(Name, '.pdf')&$recursiveAll=true
  • $recursiveAll=true:强制递归当前文件夹及所有嵌套子文件夹
  • $filter=endswith(Name, '.pdf'):仅保留PDF格式文件(若需忽略大小写,可改为endswith(toLower(Name), '.pdf'))

2. 添加Foreach活动遍历所有文件

在Get Metadata活动后新增Foreach活动:

  • 将Items属性设置为@activity('get metadata').output.value,实现遍历Get Metadata返回的所有文件列表
  • 将原有的复制活动拖拽到Foreach容器内部

3. 修改复制活动的文件路径表达式

把原表达式中固定取第一个文件的activity('get metadata').output.value[0]替换为循环变量item(),最终表达式为:

@concat(replace(item()['odata.id'],'https://cactuscompany.sharepoint.com/',''),'/$value')

这样每次循环都会自动获取当前遍历到的文件ID,而非固定只取第一个文件。

4. Blob端配置确保不保留目录结构

在Blob数据集的文件名字段中填写@item()['Name'],所有PDF文件会直接存入Blob容器根目录,不会生成原SharePoint的子文件夹结构。

测试验证

  1. 单独运行Get Metadata活动,检查输出的value数组是否包含所有子文件夹中的PDF文件
  2. 运行完整管道,确认Blob容器内所有PDF文件复制成功,且无多余子目录

内容的提问来源于stack exchange,提问作者cesalomx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 02:30:03