【Power Automate】エクセルのセルに入力した日付で動作を操作する【Excel】

Power Automateを使ってエクセルを連携させることについて書きましたが。
この前準備をすることで、エクセルの様々な操作を自動化することができます。

で、今回使う理由で一番重要なのが、エクセルのセルに入力した日付を元にした操作。
なので、日付関係の操作に絞って少し書いて行こうと思います。
前準備の追加
エクセルの表をテーブル化することで、データテーブルとして扱うことになります。
データの比較を行うためにはデータ型も同じにしておかないと、正確な比較ができません。
エクセルを普段使っていると、よっぽどのことが無い限りいじらないかも知れませんが。
「セルの書式設定」で確認しておきましょう。
一応、エクセルオンラインだとこんな感じで設定できます。
フォーマットではアスタリスク付の日付で

デスクトップ版よりもシンプルになっているので分かりやすい・・・ですが。
最初は戸惑いましたw
もちろん、デスクトップ版の「セルの書式設定」で設定してからアップロードしても大丈夫です。
この後に書く、Power Automateで使用する関数でセルに入力された日付データを使用するんですがー。
「この関数で使用するデータ型はstrじゃないとだめよ!」のようなエラーが出て、いろんなところを確認する羽目になったので。
表を作成しながらデータ型も設定しておくと、手戻りはないでしょうね。
「Excel Online(Business)」の設定
値を取得するアクションを設定します。
冒頭の様に様々な項目がありますが、セルの値を取得する場合は「表内に存在する行を一覧取得」を選ぶのが良さそうです。
選択後に開く設定画面の各項目を入力していきます。
前回の記事で書いたように、読み込みたいエクセルファイルを保存しているアカウントに切り替えてから操作しましょう。
じゃないと、必要なテーブルが表示されず、選択することもできないので。

項目名 | 選択項目 |
---|---|
場所 | OneDrive for Business |
ドキュメントライブラリ | ドキュメント |
ファイル | テーブルを保存しているエクセルファイルをフォルダから指定 |
テーブル | エクセルファイル内で作成したデータテーブル名を指定 |
詳細パラメータ | 「DateTime形式」にチェック 「ISO8601」を選択 |
これで、指定したテーブルのデータを読み込む事ができ、セルの値を取得することができるようになります。
Power Automateで使用する日付の関数
Power Automateで日付を操作できる関数は細かく用意されています。
全部を使うわけではないので、比較としてよく使うことになるであろう関数を2つだけ書いておきます。
使い回すなら
関数なので、その都度記述することで使えますがー。
使い回すなら、変数にしてしまう方が楽だし分かりやすいです。
変数に組み込むには、フローの⊕から「アクションを追加する」を開き。
「コネクタの種類」→「組み込み」にチェックを入れると、「Variable」という項目が出るので、それをクリック。

変数の内容の選択画面になるので、「変数を初期化する」を選択。

で、変数を判別する名前「Name」と、変数のデータ型「Type」を決め。
「Value」に関数や値を入力すれば、使い回す準備は完了です。
今回は関数を入力するので、「Type」は「String」にしておきます。
作成した変数を使うには、それぞれのアクションで値を設定するところで、「動的データ」タブをクリックすれば設定した変数の名前が表示されるので、それを選択するだけ。
非常に楽です。
当日の日付は「utcNOW()」
当日の日付、つまり現在のタイムスタンプを取得するには、utcNow()を使用します。
引数で指定できるのは表示の形式で、フォーマットは「’yyyy-MM-dd’」。
特に変更の必要がない場合は、指定する必要はありません。
変数に入れて、「当日」と名前をつけておきます。

「◯日後」「◯日前」は「addDays()」
基準日の「◯日後」や「◯日前」の日付を取得する場合は、addDays()を使用します。
引数は、addDays( '基準日’, 加えたい日数, '表示形式’)です。
「’表示形式’」のフォーマットは「’yyyy-MM-dd’」です。
加えたい日数の部分は「◯日後」の場合は正の数、「◯日前」の場合は負の数を入力します。
先程当日の変数を作ったので、当日を起点に10日後または10日前の日付を取得する場合はこんな感じです。

「’基準日’」の引数は、関数を直接入力しても大丈夫です。
エクセルのセルに入力されている日付を基準日にする場合は、「’基準日’」の引数のところで。
・「動的データ」タブをクリック
・使用したいエクセルのテーブルの列名を選択
という操作で取得できます。
参考:【Power Automate】「今日から30日後」などを自動で算出! 関数やアクションで日時を計算・変換する方法‐できるネット
条件分岐は「Control」
日付を比較することによって動作を切り替える場合には、条件分岐を設定できる「Control」アクションを利用します。
自分の環境では一番上に表示されてましたが。
⊕→「コネクタの種類」→「組み込み」にチェック
で表示されます。

条件分岐の場合は、「条件」を選択するとフローに分岐が表示されます。
エクセルのif文のように、真の場合の動作と偽の場合の動作を作成することに。
その条件で、ここまでに設定した変数や、関数、エクセルのセルの値を使用することができます。

複数の条件も設定できて、「AND」と「OR」の設定も可能です。
比較演算子?は英語表記だったんですがー。

演算子? | 内容 |
---|---|
A contains B | 値が含まれるか。「AがBに含まれる」。 |
A dose not contain B | 値を含まない。「AはBに含まれない」。 |
A is equal to B | 等しい。「AはBに等しい」。 |
A is not equal to B | 等しくない。「AはBではない」。 |
A is greater than B | 〜より大きい。「AはBより大きい」。 |
A is greater or equal to B | 〜以上。「AはB以上」。 |
A is less than B | 〜より小さい。「AはBより小さい」。 |
A is less or equal to B | 〜以下。「AはB以下」。 |
A start with B | 〜で始まる。「AはBで始まる」。 |
A dose not start with B | 〜で始まらない。「AはBで始まらない」。 |
A end with B | 〜で終わる。「AはBで終わる」。 |
A dose not end with B | 〜で終わらない。「AはBで終わらない」。 |
必要そうなものは一通り揃ってますかね。
「start with」と「end with」は文字列比較っぽいですが。(使ってないのですみません。)
他の「Contorol」は使ったことがまだないので、こちらから内容を確認いただければと思います。
ざっくり一応書いておきますが。
・Do until:条件になるまで実行
・それぞれに適用する:同じアクションのループ
・スイッチ:値によって動作を変える
・スコープ:グループの状態により動作を実行
・終了:デバッグみたいなもの?
という感じみたいです。
まぁ。
ローコードツールとはいえ、プログラム動作をなんとなく把握しておかないと、少しとっつきにくいかもしれません。
何かしらのプログラミング言語を扱えたり知っていれば、近い関数があるはずなので、置き換えて覚えると理解は速いでしょう。
参考:Power Automateフィルタークエリの書き方(列名・日時・タイムゾーンに注意)‐Unite
空白の判定「empty()」
エクセルのセルが空白であるかどうかを判定したい場合も「条件」で行えます。
その時には、empty()関数を値のところに使用します。
引数でそのセルの列名を選択する流れは変わりませんが。
trueかfalseの判定も関数で行います。

たぶん、値を指定するところなので、関数を使用しないと文字列判定になるんでしょう。
で、どうやらここの判定が、フローの「真」と「偽」にそのまま対応するようなので。
シンプルに真偽判定をするように組む方が分かりやすいかと思います。
・・・なぜか逆説で考えてしまい、実装時に頭が混乱したのが私です。
ちなみに、エクセルのセルの空白判定の需要は少なさそうですが、「item?['列名’]」という指定になるみたいです。
フォームとかだと、「triggerOutputs()?[‘項目名’]」となるようですね。
参考:【PowerAutomate】条件式の使い方‐Usagit
後はフローを作るだけ
ここらへんの流れを覚えれば、エクセルのセルに入力された日付を元にしたフローを作れるのではないでしょうか。
Power Automateの関数は便利だなぁと思いつつ。
最初は戸惑ったGUI操作も慣れれば快適です。
ディスカッション
コメント一覧
まだ、コメントがありません