0
2

More than 1 year has passed since last update.

PowerAutomateのISO8601とシリアル値の相互運用の条件

Last updated at Posted at 2021-11-15

PowerAutomateのワークフローからOneDriveやSharePointで管理されたExcelのデータにアクセスする場合、日付データについての制約があります。

Background

PowerAutomateの日付データはISO8601形式の文字列型データ、対してExcelの日付データは1900年1月1日を起点とするシリアル値です。

以前はPowerAutomateからExcelのデータを参照したり更新したりする場合、2つのデータ型の間をフロー開発者が自分自身で取り持ってやる(相互変換してやる)必要がありました。
これをしないと、PowerAutomateの日付データは文字列そののままの内容でExcelに書き出され、Excelの日付データはシリアル値そのままの内容でPowerAutomateに読み込まれてしまうという問題があったのです。

2021年現在「DateTime形式」というオプションが追加され、この問題が改善しました。

image.png

image.png

Problem

しかしこの「DateTime形式」で ISO 8601 を選択していても日付データが相互変換されないことがあります。
つまり従来どおり、PowerAutomateの日付データは文字列そののままの内容でExcelに書き出され、Excelの日付データはシリアル値そのままの内容でPowerAutomateに読み込まれてしまうということです。
このような違いはどうして起きるのでしょうか?

Solution

「DateTime形式」で ISO 8601 を選択して日付データの相互変換をするには以下の条件をいずれも満たす必要があるようです:

  • 列の表示形式が「日付」ないし「時刻」になっていること
  • 列の最初の行のデータが日付ないし時刻として妥当な値(ようするにシリアル値)であること

image.png

例えば、次のテーブルでは DATE2DATE5 はいずれも「表示形式」が「日付」となっています。 2021/11/142021/11/15 と表示されている部分はシリアル値が入力されている状態、対して ISO8601形式の日付が表示されている部分は文字列が入力されている状態です:

image.png

「DateTime形式」で ISO 8601 を選択した状態のアクションを使い、このテーブルからレコードを読み取ったり書き込んだりすると、 DATE3DATE4 の列は相互変換が行われますが、 DATE2DATE5 の列は行われません(個別のセルごとに変換の有無が変わるのではなく、条件に該当する列のセルはすべて変換、該当しない列のセルはすべて変換なしになります)。

このように、「DateTime形式」の機能を使う場合は列の「表示形式」だけでなくその列に実際に入力されている値についても考慮する必要があります。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2