我正在构建管道来处理突触中 SharePoint 上的最新文件,但我不知道如何仅处理最新文件。
我认为管道中需要 3 个步骤。(但现在我还没有添加第三个活动。)
首先是“从 SharePoint 获取访问令牌”,这是成功的。
第二个是“获取文件列表”,这也成功了。
最后一个是“仅选择最新文件”,但我不知道该怎么做。
我尝试使用第二步输出中的
@item().value.TimeLastModified
。
数据的更新频率几乎是每月一次,但每个月的文件名模式并不相同。 (不像 filename_yyyyMM.xlsx) 所以很难从文件名中选择我要处理的文件。
你有什么想法吗?任何答案都会有所帮助。 对不起,我的英语不好。谢谢你。
从第二个网络活动中获取文件列表后,您可以按照以下方法来实现您的要求。
与您的网络活动输出数组一样,我采用了文件名和上次修改日期的示例数组,如下所示。我已将其存储在数组类型的管道参数中。
[
{
"filename":"file1.xlsx",
"TimeLastModified":"2023-11-16T01:37:20Z"
},
{
"filename":"file2.xlsx",
"TimeLastModified":"2023-11-17T01:37:20Z"
},
{
"filename":"file3.xlsx",
"TimeLastModified":"2023-10-16T01:24:20Z"
}
]
首先在管道中创建两个变量,字符串类型的
date
和latest_filename
。
将旧日期作为
date
变量的起始值。我们将循环中当前的最后修改日期与该变量进行比较,如果它更大,则用当前修改日期更新该变量。
所以,给出旧的日期,这里我给出去年的日期
@subtractFromTime(utcnow(),1,'year')
。
然后,将您的 Web 活动输出数组
@activity('get the list of files').output.value
提供给 ForEach 并确保选中 Sequential。这里我给出了我的数组参数。
在 ForEach 中,采用 if 活动并使用下面的表达式来比较日期。
@greaterOrEquals(ticks(item().TimeLastModified), ticks(variables('date')))
在 True events 内,使用设置变量活动将
date
和 latest_filename
变量更新为当前文件名和当前 TimeLastModified
。
更新您当前的文件名。
调试管道,最新修改日期的文件名将存储在 For 循环末尾的
latest_filename
变量中。
根据您的要求使用此变量执行进一步的步骤。