Power AutomateにDateDiff関数がないのって地味に困るので他に方法がないか調べてみた

以下旧記事ー--

Power AutomateにDateDiff関数が無いっていうのは知っていたけど、やっぱり何かと不便。

そこでDateDiffっぽいことができる方法が他にないか調べてみた。

スポンサーリンク

事前準備

今回使用するリストはこんな感じ。
※ちなみに今日は2022/2/10
このタイトル列と日付列があるだけのシンプルなリストを使って、色々と期間の計算を試してみる。

ODATAクエリでフィルターしちゃって何とかする方法

まず、DateDiff関数で求める差分の値は不要で、基準日以前とか基準日以降のSharePointリストアイテムを持ってきたいみたいなとき。

今日以前のアイテムを取得

まず、冒頭のリストアイテムから今日以前のアイテムを取得したいときはこんな感じ。
※formatDateTime(…)を「”」で囲わないと失敗するので注意

日付列名 le 'formatDateTime(utcNow(),'yyyy-MM-dd')'

実行してみると、
フィルタークエリはこんな感じになって、
今日以前の項目だけきちんと取れてきている!

日付の微調整

日付を微調整したいときはaddDays関数を使用してこんな感じ。

日付列名 le 'formatDateTime(addDays(utcNow(),微調整日数),'yyyy-MM-dd')'
例えば明日以前のアイテムが欲しいときはこんな感じ。

日付列名 le 'formatDateTime(addDays(utcNow(),1),'yyyy-MM-dd')'

実行すると明日の日付も取れてきているので、うまく動いているよう!

試してないけど、昨日以前を基準にするときはaddDaysでマイナスを指定したり、以降のアイテムが欲しいときはgeとかを使えばうまくいきそう!

HigolePC ミニPC N5095 Mini PC 16GB RAM 256GB ROM Windows 11 Pro ミニパソコン 1×フル機能Type-C 1×HDポート 1×ギガビット有線LAN 4×USB3.0 高速Wi-Fi 小型PC 省電力 軽量 4K出力 2画面出力対応 省スペース デスクトップパソコン (バッテリー版)
HigolePC ミニPC N5095 Mini PC 16GB RAM 256GB ROM Windows 11 Pro ミニパソコン 1×フル機能Type-C 1×HDポート 1×ギガビット有線LAN 4×USB3.0 高速Wi-Fi 小型PC 省電力 軽量 4K出力 2画面出力対応 省スペース デスクトップパソコン (バッテリー版)
HigolePC ミニPC N5095 Mini PC 16GB RAM 256GB ROM Windows 11 Pro ミニパソコン 1×フル機能Type-C 1×HDポート 1×ギガビット有線LAN 4×USB3.0 高速Wi-Fi 小型PC 省電力 軽量 4K出力 2画面出力対応 省スペース デスクトップパソコン (バッテリー版)
HigolePC ミニPC N5095 Mini PC 16GB RAM 256GB ROM Windows 11 Pro ミニパソコン 1×フル機能Type-C 1×HDポート 1×ギガビット有線LAN 4×USB3.0 高速Wi-Fi 小型PC 省電力 軽量 4K出力 2画面出力対応 省スペース デスクトップパソコン (バッテリー版)
HigolePC ミニPC N5095 Mini PC 16GB RAM 256GB ROM Windows 11 Pro ミニパソコン 1×フル機能Type-C 1×HDポート 1×ギガビット有線LAN 4×USB3.0 高速Wi-Fi 小型PC 省電力 軽量 4K出力 2画面出力対応 省スペース デスクトップパソコン (バッテリー版)
HigolePC ミニPC N5095 Mini PC 16GB RAM 256GB ROM Windows 11 Pro ミニパソコン 1×フル機能Type-C 1×HDポート 1×ギガビット有線LAN 4×USB3.0 高速Wi-Fi 小型PC 省電力 軽量 4K出力 2画面出力対応 省スペース デスクトップパソコン (バッテリー版)
HigolePC ミニPC N5095 Mini PC 16GB RAM 256GB ROM Windows 11 Pro ミニパソコン 1×フル機能Type-C 1×HDポート 1×ギガビット有線LAN 4×USB3.0 高速Wi-Fi 小型PC 省電力 軽量 4K出力 2画面出力対応 省スペース デスクトップパソコン (バッテリー版)
¥44,625¥52,500
(2024/11/23 12:00 時点)
MINISFORUM Venus Series NAB6LiteミニPC インテルCorei5-12600H 16GB 512GB PCIe4.0 SSD 小型pc Windows 11 HOME MiNipc Wi-Fi6 |BT5.2 |2x2500Mbps LAN有線無線接続両対応 HDMI×2 /USB-C×2 4Kクワッドディスプレイ出力対応デスクトップpc
MINISFORUM Venus Series NAB6LiteミニPC インテルCorei5-12600H 16GB 512GB PCIe4.0 SSD 小型pc Windows 11 HOME MiNipc Wi-Fi6 |BT5.2 |2x2500Mbps LAN有線無線接続両対応 HDMI×2 /USB-C×2 4Kクワッドディスプレイ出力対応デスクトップpc
MINISFORUM Venus Series NAB6LiteミニPC インテルCorei5-12600H 16GB 512GB PCIe4.0 SSD 小型pc Windows 11 HOME MiNipc Wi-Fi6 |BT5.2 |2x2500Mbps LAN有線無線接続両対応 HDMI×2 /USB-C×2 4Kクワッドディスプレイ出力対応デスクトップpc
MINISFORUM Venus Series NAB6LiteミニPC インテルCorei5-12600H 16GB 512GB PCIe4.0 SSD 小型pc Windows 11 HOME MiNipc Wi-Fi6 |BT5.2 |2x2500Mbps LAN有線無線接続両対応 HDMI×2 /USB-C×2 4Kクワッドディスプレイ出力対応デスクトップpc
MINISFORUM Venus Series NAB6LiteミニPC インテルCorei5-12600H 16GB 512GB PCIe4.0 SSD 小型pc Windows 11 HOME MiNipc Wi-Fi6 |BT5.2 |2x2500Mbps LAN有線無線接続両対応 HDMI×2 /USB-C×2 4Kクワッドディスプレイ出力対応デスクトップpc
MINISFORUM Venus Series NAB6LiteミニPC インテルCorei5-12600H 16GB 512GB PCIe4.0 SSD 小型pc Windows 11 HOME MiNipc Wi-Fi6 |BT5.2 |2x2500Mbps LAN有線無線接続両対応 HDMI×2 /USB-C×2 4Kクワッドディスプレイ出力対応デスクトップpc
MINISFORUM Venus Series NAB6LiteミニPC インテルCorei5-12600H 16GB 512GB PCIe4.0 SSD 小型pc Windows 11 HOME MiNipc Wi-Fi6 |BT5.2 |2x2500Mbps LAN有線無線接続両対応 HDMI×2 /USB-C×2 4Kクワッドディスプレイ出力対応デスクトップpc
¥55,184¥65,800
(2024/11/23 12:00 時点)
HigolePC ミニPC N100 Mini PC 16GB RAM 256/512GB ROM Windows 11 7インチ 高速Wi-Fi 小型PC 省電力 軽量 4K出力 2画面出力対応 省スペース デスクトップパソコン (HigolePC_F9BP_N100_16GB_512GB_バッテリー版)
HigolePC ミニPC N100 Mini PC 16GB RAM 256/512GB ROM Windows 11 7インチ 高速Wi-Fi 小型PC 省電力 軽量 4K出力 2画面出力対応 省スペース デスクトップパソコン (HigolePC_F9BP_N100_16GB_512GB_バッテリー版)
HigolePC ミニPC N100 Mini PC 16GB RAM 256/512GB ROM Windows 11 7インチ 高速Wi-Fi 小型PC 省電力 軽量 4K出力 2画面出力対応 省スペース デスクトップパソコン (HigolePC_F9BP_N100_16GB_512GB_バッテリー版)
HigolePC ミニPC N100 Mini PC 16GB RAM 256/512GB ROM Windows 11 7インチ 高速Wi-Fi 小型PC 省電力 軽量 4K出力 2画面出力対応 省スペース デスクトップパソコン (HigolePC_F9BP_N100_16GB_512GB_バッテリー版)
HigolePC ミニPC N100 Mini PC 16GB RAM 256/512GB ROM Windows 11 7インチ 高速Wi-Fi 小型PC 省電力 軽量 4K出力 2画面出力対応 省スペース デスクトップパソコン (HigolePC_F9BP_N100_16GB_512GB_バッテリー版)
HigolePC ミニPC N100 Mini PC 16GB RAM 256/512GB ROM Windows 11 7インチ 高速Wi-Fi 小型PC 省電力 軽量 4K出力 2画面出力対応 省スペース デスクトップパソコン (HigolePC_F9BP_N100_16GB_512GB_バッテリー版)
HigolePC ミニPC N100 Mini PC 16GB RAM 256/512GB ROM Windows 11 7インチ 高速Wi-Fi 小型PC 省電力 軽量 4K出力 2画面出力対応 省スペース デスクトップパソコン (HigolePC_F9BP_N100_16GB_512GB_バッテリー版)
¥45,899¥53,999
(2024/11/23 12:00 時点)

頑張って計算する方法

続いて差分の日数が欲しいときはこちらの記事が参考になりそう。
Attention Required! | Cloudflare

記事によると「div」「sub」「ticks」の3つの関数を組み合わせて、こんな感じで数式を書いてあげれば差分の日付が出るらしい。

div(sub(ticks(終了日),ticks(基準日)),864000000000)

検証

早速検証。

まずは基準日(start)、終了日(end)、差分(diff)をそれぞれ格納する変数を定義。
冒頭のリストのアイテムを全部持ってきて、基準日変数に今日を、
終了日にリストアイテムの日付を入れて、
diffに↓の計算式を入れてあげる。

div(sub(variables('end'),variables('start')),864000000000)

実行してみると、終了日が「昨日」だったときの計算結果は-1、
終了日が「今日」だったときは0、
終了日が「一週間前」だったときは-7とうまく計算できてそう!

未来はうまくいかなかった

ただ終了日が「明日」のときが0になってしまったり、
「一週間後」のときが6になってしまったりと、うまく動かないことも。。。

たぶん「時刻を含まない」日付列だったので、00:00:00の計算辺りで微妙に誤差が出てるのかなと。

関連記事

コメント

タイトルとURLをコピーしました