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

使用Streamsets HttpClient与Microsoft Graph API获取SharePoint最新文件

问题修正:通过Graph API筛选SharePoint文档库中指定时间后修改的文件

问题背景

我有一个SharePoint站点,文档库存储CSV文件,需要每次运行时根据上次运行时间戳(如2023-07-20T22:50:10Z)提取该时间后修改的文件及@microsoft.graph.downloadUrl。当前用Streamsets HttpClient源配置Resource URL,无报错但无法获取目标文件,示例中需筛选出lastModifiedDateTime为2023-07-21T00:00:00Z的SAMPLEFILE_2023-07-20 16-10.csv。

原Resource URL:

https://graph.microsoft.com/v1.0/sites/company.sharepoint.com,<id>/drives/{driveid}/root/children?select=name,fileSystemInfo,@microsoft.graph.downloadUrl&jql=${str:urlEncode(str:concat(str:concat("fileSystemInfo/lastModifiedDateTime ge'",'2023-07-20T22:50:10Z'),"'"), 'UTF8')}

错误点分析

  1. 参数名称错误:Graph API中用于筛选的参数是$filter,而非jql(JQL是Jira专属查询语言,不适用于Graph API)。
  2. 表达式格式问题:原Streamsets嵌套concat的写法易导致筛选条件格式错误,需简化逻辑确保时间戳的引号包裹和URL编码正确。

修正后的Resource URL

https://graph.microsoft.com/v1.0/sites/company.sharepoint.com,<id>/drives/{driveid}/root/children?select=name,fileSystemInfo,@microsoft.graph.downloadUrl&$filter=${str:urlEncode(str:concat("fileSystemInfo/lastModifiedDateTime ge '2023-07-20T22:50:10Z'"), 'UTF8')}&$orderby=fileSystemInfo/lastModifiedDateTime desc&$top=1

修改说明

  • 替换jql为Graph API标准的$filter参数,确保筛选逻辑被API正确识别。
  • 简化Streamsets表达式,直接拼接完整筛选条件后再编码,避免嵌套拼接引发的格式错误。
  • 新增$orderby=fileSystemInfo/lastModifiedDateTime desc和$top=1,自动返回符合条件的最新文件(若存在多个匹配项)。

验证效果

修正后的请求会精准筛选出fileSystemInfo/lastModifiedDateTime晚于2023-07-20T22:50:10Z的文件,对应示例数据中的SAMPLEFILE_2023-07-20 16-10.csv,并返回所需的name、fileSystemInfo和@microsoft.graph.downloadUrl字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:15:31