見出し画像

GlideのソースにしたExcel Onlineを、Power Automateで操作してみたハナシ🍑②Power Automate編

この記事は、Power Automate Advent Calendar 2022のカレンダー2、12月15日担当分の記事です🎄📅✨

GlideのソースにしたExcel Onlineを、Power Automateで操作してみたハナシ🍑①Glide編 の続きです!

Glideで日々更新するこんなExcelファイル。

毎日 朝5時に、賞味期限の列を確認して賞味期限が迫っている食材があればTeamsで通知するフローを作成してみました🤖

めちゃくちゃ試行錯誤しながら やりましたので… 間違ってるかもしれないし無駄なことしてるかもしれないので、参考にはしないでください😂

では、作っていきます…!✊🔥

① 新しいフローを作成する

毎日回すフローなので、「スケジュール済みクラウド フローを構築する」を選択。

タイムゾーンで日本を選択して、時分を設定。

② テーブル「買い置き食材」を取得

使用したのは、「Excel Online:表内に存在する行を一覧表示」
該当のテーブルを選択。

ここでフィルタークエリを使って、賞味期限が空白以外の行に絞りたかったんだけど…

と思っていたけど、もしかして11/26(土)の気ままに勉強会でMiyakeさんが教えてくださった 「nullはExpressionで入力する」に通ずるんだろうか🤔

いやいや、もっと言えばここで賞味期限が近づいているものだけ絞れれば一番楽だったんか。

でもよくわかんないのでw、単純に日付が入っているかを判定する列をExcelに関数で追加🤤

こちら参考にさせていただきました🙏 ありがとうございます!

でも悲しいことに、日付がシリアル値になる…😭

そんなとき 天の声👼 わたるふさんより、重要テクが…!

DateTime形式を「ISO8601」にしておくと、タイムスタンプで取得できるそうな…!

でも、ならない…😭
なんでーーーーーと思っていたら、どうも一番始めのデータが入力されていないと、その列が日付だと判定してくれないもよう(2022/11/27現在)。

ならば仕方ない…
シリアル値を変更するアクションを追加するか😢

③ シリアル値の変換

参考にさせていただいたサイトはこちら。ありがとうございます🙏💗

使用したのは、「日時:時間への追加」
そしたら これがまたタイムスタンプになる😭

「賞味期限」を追加すると、Apply to eachに囲まれる。
気ままに勉強会で動きが遅くなるので できれば回避した方がいいと教わったけど、まだよくわかんないのでこのまま行きます✊

④ 取得した賞味期限が実行日の3日以下だったら、Teamsに通知

使用したのは、「コントロール:条件」。
賞味期限と実行日+3日を比較。

formatDateTime(body('時間への追加:「賞味期限(タイムスタンプ)」生成'),'yyyy/MM/dd')

formatDateTime(addDays(addHours(utcNow(),9),3),'yyyy/MM/dd')
以下かどうか。

条件にあてはまったらTeamsに投稿…ってやると、該当する食材が複数あったときに何通も投稿されてしまう😂

ので、一番始めに投稿用の変数を準備してみる。

んで条件にあてはまった場合(「はい」)は、変数「投稿内容」に箇条書きにして追記していく。

使ったのは、「変数:文字列変数に追加」

  • 食材名(保存場所):賞味期限

となることを期待🙏🌈

その上で、変数「投稿内容」がブランクじゃなかったらTeamsに投稿するようにする。

使用したアクションは、再び「コントロール:条件」。
単純に、変数「投稿内容」がブランクかどうか。

「いいえ」の方に、Teamsに投稿するアクションを追加。
使ったのは、「Microsoft Teams:チャットまたはチャネルでメッセージを投稿する」。

⑤ 実行

全体のフローはこんな感じ。

Apply to each の中はこんな感じ。

条件:「変数『投稿内容』がブランク」か の中はこんな感じ。

では!実行します!!(。・Α・)σポチッ

ばっちりー! (`・∀・)ノイェ-イ!

⑥ 所感

Teamsへの投稿時、liタグを使ったから ulタグで囲まないと…と思って入れてたんだけど、謎に<ul>が残ってしまって…

ulタグ消しても全然問題なかったので、消してしまった😋

いや~💦 Power Automateでの日付操作、難しかった😂
迷子になっているときは、初めてローコードツールよりGASの方が簡単だって思いましたw

でも今回の経験で、だいぶ日付操作に慣れました!
あ~ はいはい、タイムスタンプなのね~って感じ🙃 ←ホントか?

「表内に存在する行を一覧表示」と、Apply to each のところは絶対もっとなんかいい感じにできる…はず…

来年から実務で使い出したら、改良できるようになるかなぁ🤤

大好きなGlideとPower Automateの連携、とってもいい勉強になりました!🥳

⑦ さっそく修正版

2022/12/15(木) さっそく追記。

さんざん悩んでいた②のときの「Excel Online:表内に存在する行を一覧表示」のフィルタークエリ…

なんですって😱
めちゃくちゃハマったのにーー!! ウワァァ—–。゚(゚´Д`゚)゚。—–ン!

皆様、お気をつけください…🙏
そしてMiyakeさん、ありがとうございます!!

という訳で、「Excel Online:表内に存在する行を一覧表示」のフィルタークエリは使用するのをやめて、その下に「データ操作:アレイのフィルター処理」を追加してみました✊

ホントは賞味期限がnullと等しくないにしたかったけど、やっぱりそれだとうまくいかない…

→ nullではなく、'' と等しくないにするとのこと!

こうして…

こうじゃ!!

できた(∩´∀`∩)💕

その後の「Apply to each」の「Value」を、

アレイのフィルター処理の「本文」に変更。

テスト実行(。・Α・)σポチッ

キターーー(・∀・)ーーーー!!

テストデータ作ってから時間が経ってるから食材残ってますが、ちゃんと全部食べましたw

先日の気ままに勉強会でMiyakeさんに教えていただいた「アレイのフィルター処理」の使い方、実際やってみたらよくわかりましたー😍

ありがとうございます
‹‹\(´ω` ๑ )/››‹‹\(   ๑´)/›› ‹‹\( ๑´ω`)/››

事務員が少しの背伸びでできる効率化を目指す🌈✨ 自分の好きなものを、楽しく発信していきたいです! いただいたサポートは学習費にあてさせていただきます🥰