使用Microsoft Data

时间:2019-01-08 15:49:45

标签: sharepoint odata microsoft-flow

在我的项目共享点列表中,我有一个“到期日期”字段和一个“状态”字段。我正在尝试创建一个每周发生一次的循环流。它将抓取状态为“未清”且日期为该日期或更早的所有项目。

  • 状态包含“打开”或“关闭”。
  • 截止日期包含yyyy-MM-dd格式的项目截止日期。

这是我当前的流程:

  1. 每周1次重复触发。
  2. 当前时间
  3. 从共享点列表中获取项目。
    • 到目前为止,对于过滤器,我有Status eq 'Open' and Date_x0020_Due le Date(@{body('Current_time')})
      • @{body('Current_time')是从第2步检索到的当前时间
  4. 我拿走那些物品并将它们变成HTML表格
  5. 我发送了包含该html表的电子邮件。

当前步骤2的过滤器不起作用。 Status eq 'Open'很好,但是Date_x0020_Due le Date(@{body('Current_time')})不起作用。

我猜这是因为OData无法将当前时间的DateTime对象转换为Date对象,并且无法对其进行比较。

如何更改此过滤器,使其返回状态为“已关闭”和“截止日期为当天或之前”的项目?

限制:

  • 我无法更改任何字段的名称。
  • 我无法更改任何字段的数据类型(例如,使Date Due为DateTime类型)。
  • 我无法添加或删除字段。

1 个答案:

答案 0 :(得分:0)

我以某种方式解决了这个问题。

我的结束流程如下:

  1. 每周1次重复触发。
  2. 从共享点列表中获取项目。
    • 对于过滤器,我有Status eq 'Open'
  3. 我使用过滤器数组删除过期的项目。
    • 过滤器为@lessOrEquals(ticks(concat(item()?['Date_x0020_Due'], 'T00:00:00Z')), ticks(utcNow()))
      • Ticks()将时间戳转换为自1601年1月1日以来的滴答声数量(至少根据流程,这种情况下文档似乎已关闭)。
      • 使用此方法,我可以通过使用concat()将日期添加到日期中来将日期转换为时间戳。
      • 我将其与当前UTC时间进行比较,看看它是否小于当前日期。
  4. 我将过滤器数组输入到HTML表中。
  5. 我发送了包含该html表的电子邮件。