ガチ初学者がネット検索で調べて作った「荒削り」当番通知フロー

1.4K Views

August 22, 22

スライド概要

20220820_気ままに勉強会#28
Power AutomateなんでもLT会

profile-image

2022年3月頃~ PowerApps、PowerAutomate 等を中心に勉強中。2024年9月よりPower Apps開発・保守・支援をする会社に転職。趣味でアマチュアオーケストラに所属していたが、勉強に集中するためお休み中。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

1 ガチ初学者が ネット検索で調べて作った 「荒削り」当番通知フロー 2022/08/20 気ままに勉強会#28 なんでもLT回 ~第6回~

2.

自己紹介  ハンドルネーム:yukio  Twitter:@yukio_365  ブログ:yukioのアウトプット (hatenablog.com) ・山口県出身・在住、1990(平成2)年生まれ(32歳) ・事務用品販売店のPCサポート職/営業/情シスもどき ・2022年3月頃~ 「Power Automate」の存在を知り、調べていくうちにそのすばらしさに気づき、 勉強を開始して今に至る。 他にもPower Automate for desktop、Power Appsを中心に勉強しつつ、 会社の業務改善にも挑戦中 ・趣味は楽器演奏(コントラバス)。アマチュアオーケストラと吹奏楽団に 所属していたが、勉強に集中するためお休み中 2

3.

今回のフロー開発のきっかけ  弊社には「駐車場」「朝礼当番」「朝の掃除当番」の3種類の当番があり、 それぞれが1週間単位で交代している。  毎週の最終出勤日に、朝礼で来週の当番を告知している。  一応掲示もあり 3

4.

いつもの朝礼だったら・・・ (朝礼当番) 来週の当番は 駐車場が●●さん と△△さんと■■ さん、朝礼が◇◇ さんで・・・ 4

5.

たまにこんなときがある 5 有給 ↓ (朝礼当番) 来週の当番は 駐車場が●●さん と△△さんと■■ さん、朝礼が◇◇ さんで・・・ 客先直行 ↓ 今日2人おらんで

6.

弊社は「口頭での連絡」をものすごく 大事にする 6  週の最終日に有給等の理由で休んでいる人、お客様先に直行している社員には、 「来週自分は何の当番なんだろう?」を知る術がない。  直行だったら帰社後に確認すればよいが、休みの場合はどうしようもなく、「誰 かに聞く」しか選択肢がなくなってしまう。  これを自動でTeamsに通知できれば便利じゃね?と思いつき、開発をすることに。

7.

7 フロー作成の前に 各種リストの作成

8.

マスターリストの作成  まずはSharePointに専用サイトを作り、「駐車場」 「朝礼」「掃除」の ローテーションをまとめるリスト(マスター的なもの)を作成  駐車場:ParkingList  朝礼:MorningList  掃除:CleanList 8

9.

マスターリストの作成 9 いずれのListも 「ID列」「Title列」をそのまま使った

10.

それぞれのローテーションルール ParkingList(駐車場) ID MorningList(朝礼) ID 1 Title Aさん 2 3 ID 1 Title Dさん 1 Title 弦 Bさん 2 Eさん 2 木管 Cさん 3 Fさん 3 金管・打 ・・(中略)・・ 4 ぱんだ ・・(中略)・・ Iさん 9 CleanList(掃除) 12 Cさん ↑ ↑ ↑ 毎週「3名」 毎週「1名」 毎週「1チーム」 10

11.

日付と当番を格納する 「RotationList」 駐車場(3名) 朝礼 掃除 (1名) (1チーム) 11 それぞれの担当者

12.

「参照」列をうまく活用できました。  先ほどのRotationListの各種列は、マスターリストから「参照」で取って くる仕組みにしました。  リストを表示して「歯車マーク」 →「リストの設定」 12

13.

「参照」列をうまく活用できました。  「列の作成」をクリック 13

14.

「参照」列をうまく活用できました。  「この列の情報の種類」を「参照」にして、下にスクロールする 14

15.

「参照」列をうまく活用できました。  情報の取得先:さっきの「●●List」  取得する列:ID  「以下のフィールドを・・・」で Titleを選択  「OK」ボタンで保存 15

16.

1回の操作で2つの列が出来上がる 「取得する列」で指定 (作った列そのもの) 「以下のフィールドを・・・」 でチェックを入れたもの ※列名はわかりやすく編集済 16

17.

Power Automateで作ったフロー  ①毎週金曜日の朝8:30に、今週の当番から来週の当番を計算して、 RotationListに追加するフロー  ②RotationListに行が追加されたら、その内容をTeamsに投稿するフロー 17

18.

18 フロー① RotationListに項目を追加

19.

(1)トリガー、そして月曜日の定義 19 convertTimeZone(addDays(utcNow(),3), 'UTC', 'Tokyo Standard Time’) ※「今日の3日後(金曜日に対する月曜日)を計算して入れてるだけ

20.

(2)RotationListから前回の当番情報を 取ってくる 20 Date(日付)の降順で並べ替えて 1レコードだけ取ってくる

21.

(3)当番ID保存用変数、及び一時変数の 初期化 21 ※駐車場当番で3個(p1、p2、p3)、朝礼で1個(m)、掃除当番で1個(c) および一時変数(tmp)を宣言、初期化

22.

(4)マスターリストの件数(ローテー ションの人数)を調べる準備 22 この状態で保存してみると・・・

23.

(4)マスターリストの件数(ローテー ションの人数)を調べる準備 こんな警告が出ました。 23

24.

(4)マスターリストの件数(ローテー ションの人数)を調べる準備 24 全件取ってくるために出てくる 警告をこれで回避 ※先日の「気ままに勉強会」 アフタートークで教えて頂き 感謝!

25.

(5)マスターリストの件数(ローテー ションの人数)を計算する 25 length関数 ※先日の「気ままに勉強会」 アフタートークにて Miyakeさんに教えて頂き 感謝! length( ) ※(4)と(5)を、それぞれ3種類の当番(駐車場、朝礼、掃除)で実施

26.

(6)次週の当番を計算する 26

27.

(6)次週の当番を計算する  IDから1を引いて「0始まりの連番」にする  3人ローテなら3、1人ローテなら1を足す。  (5)で取ってきた「人数(チーム数)」で割った余りを求める  1を足して「1始まりの連番」に戻す 27

28.

add関数(足し算と引き算) mod関数(モジュロ演算) add(A , B)  A+Bを求める関数   Bを負の数にすれば引き算も可能 mod(A , B)  A÷Bの余りを求める関数  28

29.

29 なぜ割り算の余りが欲しいのか 「0始まり」「1始まり」の変換を挟むのか 元 +3 求  (例)3人ローテの場合 1 4 4  2 5 5 3 6 6 4 7 7 ローテ人数は9人。単純に3足すだけ だと、10以上の値が出てしまうので、 それを「1~9」の範囲に戻すために、 9で割った余りを求めようと考えた。 5 8 8 6 9 9 7 10 1 8 11 2 9 12 3

30.

30 なぜ割り算の余りが欲しいのか 「0始まり」「1始まり」の変換を挟むのか 元 +3 mod 求  (例)3人ローテの場合 1 4 4 4  2 5 5 5 3 6 6 6 しかし、普通に「3足して人数で割っ た余り」だと、「余りが0」の時に 弊害が出てきてしまうことが判明 4 7 7 7 5 8 8 8 6 9 0 9 7 10 1 1 8 11 2 2 9 12 3 3

31.

31 なぜ割り算の余りが欲しいのか 「0始まり」「1始まり」の変換を挟むのか 元 -1 +3 mod +1 求  (例)3人ローテの場合 1 0 3 3 4 4  2 1 4 4 5 5 3 2 5 5 6 6 このようにすると、計算はややこし いが、条件分岐を考えることなく、 次の当番を計算することができる。 4 3 6 6 7 7 5 4 7 7 8 8 6 5 8 8 9 9 7 6 9 0 1 1 8 7 10 1 2 2 9 8 11 2 3 3

32.

(7)求まった次週の当番をRotationList に格納する ←計算した月曜日 ←計算した各種当番のID 32

33.

33 フロー② 次週の当番をTeamsに通知

34.

(1)トリガー:RotationListに項目が追 加されたら 34

35.

(2)Teamsのチャネルに来週の当番を 投稿する 35

36.

こんな風に通知されます 36

37.

37 (時間があれば)デモ

38.

気づき  現在はネットに情報があふれている(ブログ、YouTube等の動画)ので、 活用しない手はない!  とはいっても、本質の理解や、初学者の学習には本での勉強の方が効果的。  今回のフローは本での勉強前に作成したが、本を買って勉強したら一気に 理解が深まった。  構想自体は昨年秋口からあったがなかなか進まなかった。  それまでは自分一人の中で進めていたが、今年3月ごろに上司に「こう いったものを作っている」とうっかりしゃべってしまった。でもそれがア クセルを踏む一因になったと思う。 38

39.

今後の課題  「Apply to each」を使わずに変数の計算をしたい(Miyakeさんから頂 いた課題)  日交代の当番もあるので、それも自動通知したいが、社内カレンダーが特 殊な中でどうやって「今日は通知する」「今日は通知しない」を判断させ るのか?  チームへのメンションで通知する方法はあるのか?あるとすればどうすれ ば実現可能か?  今回はTeams通知の部分を平文にしたが、AdaptiveCardを使ってもっと 見やすくしたい 39

40.

ぜひご意見ください  今回のフローは、初学者の頃に独学で作ったので、「今後の課題」で書い たところ以外にも、美しくないところや改善できる部分が色々あると思い ます。現に今もブラッシュアップ中です。  今後の参考にしたいので、本編アンケートや今日のアフタートーク、 Twitter DM等でいただけると助かります。 40

41.

41 ご清聴ありがとうございました