魁!! ITブログ

比較的素人向けです。「扇風機、新しいの買っちゃおっかなっ」くらいのノリで「これからちょっと勉強してみようかなっ」くらいの方々向けです。玄人には無駄な時間を費やさせてしまうかもしれません。ご了承ください。

PowerAppsとPowerAutomateでSleep(的なやつ)をやってみた。昨年に続いてアキヒサンタからのクリスマスプレゼントだよ!

Office 365 Advent Calendar 2021   24日目   のブログでもあります。

Office 365 Advent Calendar 2021 - Adventar

 

 

あーーーーーーー

 

 

 

 

 

 

 

 

 

 

 

りがとう。

 

いや、ありがとうございます。

本当に。

今回はもう本当に感謝のブログ。

 

 

 

ん?

なんだい?

 

 

 

何に感謝してるかって?

 

 

 

 

 

 

 

 

 

 

僕  自  身  に。

 

 

 

 

 

 

 

 

 

 

そう。

ア キ ヒ サ に!

 

 

 

 

 

あ、どうも。アキヒサです。

 

むにゃむにゃ。

 

すいません、ちょっと Sleep ってたみたいです。

え?

僕、何か言ってました?

いやいやいや、寝言ですよぅ。

 

 

 

 

 

うそつきました。

 

 

やだなぁ。

そんな訳ないじゃないですか。

当然、読者の皆さんに(ありがとう)ですよ。

むにゃむにゃ。

 

まあアレだむにゃ。

今日も読んでくれてありがとう! っつー話。

 

 

まあ、アクセス数が増えたからと言って

僕には1円も入ってこないからアレだけど。

でも、ちょっとした自己肯定感にはつながるよね。

 

こんなふざけたブログでも、

誰かの為に役にたってるのかなーってね。

 

んで、あわよくばめぐりめぐって

何かしらの仕事がうちの会社に回ってきたら

それでいいかな。

 

っつー話。

 

OnTime関連に関してはさ、

僕がこのブログを更新すると、

内容に沿ってお客さんから追加設定とか

バージョンアップの依頼とか来るんだよね。

 

やべぇよね。

もはや監視されているんだと思う。

この僕の駄ブログが。

 

よって、今後もあやうい発言は控えめにしていきます。

ふわぁーあぁ。

むにゃんむにゃん。

 

 

さて、今日は何を書こうかっていうとね。

去年はこんなモンに参加させてもらいましてね。

Office 365 Advent Calendar 2020

adventar.org

 

ってなわけで、今年も調子にのってやっちゃおうかと。

それでブログ書いちゃおうかとね。

 

 

ちなみに去年はどんな感じかっつーと、

去年はこんな感じでプレゼントをさせていただきましてね。

nagoyaitadmin.hatenablog.com

 

果たして誰か無事に使ってくれているのだろうか。
これ↓。

f:id:NagoyaITAdmin:20211130141901p:plain

去年作った会議室一覧を確認できるやーつ。

 

地球のどこかで使ってくれてる人がいたらいいな っつー話。

なんなら別に地球じゃなくて宇宙でもいい。

元ZOZOの前澤さんとか。

 

ね。

 

 

 

ねむっ。

 

 

 

~~~ 本題 ~~~

※注※
本内容は私個人の意見や見解等であり、大変恐縮ですが記載内容に関して
誤りがある可能性がございます。
そのような場合、御連絡いただけましたら早急に訂正いたしますので、
よろしくお願いいたします。

 

~ ~ 今 日 の 目 次 ~ ~

◆PowerAppsで Sleep の実装
 (↑やったことある)

◆PowerAutomateで Sleep を実現できるか検証 
 (↑やったことない)

さて。

最近、僕慢心してた気がする。

IT初心者向けとか言いながらも、

ガチガチの初心者向けに書けてなかったんじゃないだろうか。

「Sleepの実装」 とか言われてもさ。

ピンとこないよね、皆んなはさ。

 

じゃあここで軽く考えてみよう。

何だと思う?

 

Sleep。

 

そうだね。みんなが今頭の中に思い浮かべた

そのSleepだよ。

寝る。いや、眠る。

じゃあ
『「眠るの実装」ってなんやねん』
てなるよね?

 

答えはね。

そのまんま。

寝かせてあげるんだよ。

寝かしつけてあげる、

もしくは、バトルのプロに首の後ろっかわを

 トンッ

f:id:NagoyaITAdmin:20211202132211p:plain

ってやってもらって意識をなくす感じだね。

 

どう?

まだピンとこないかな?

そうだねえ、君達の身近なモンでいくと、

スマホの目覚ましとかで考えてみてはどうだい?

 

目覚ましで起きた時、スヌーズにしたりするでしょ?

どうせ。

このブログを読んでくれてるようなアナタは確実に

目覚ましで起きてももうちょっと寝たいからといって、

安易にスヌーズ機能を使ったりするはずだ。

 

それだよ。

それなんだよ。

今回の Sleep ってのはさ。

「ちょっとだけ
  (命令を)実行するの

        待っててね」

ってやつのこと。

初心者のみんなの心にの残りやすいように、

わかりやすく5・7・5にしてみたよ。

 

ちなみに。

君のスマホの目覚ましは、
06:00
06:05
06:10
06:15
みたいに、5分おきにセットされてたりしないかい?

アレ、やめた方がいいらしいぜ。

知らんけど。

 

 

 

さて。

Sleep が何を意味してるかわかったところで、

実際にやってみよう。

 

◆PowerAppsで Sleep の実装

やったことある。

うん。僕これやったことあるだよ。

やったことあるから、簡潔にいくね。

基本的には過去ブログでやった感じで。

nagoyaitadmin.hatenablog.com

 

LOOP処理でどうにかそれっぽく実施してみることとします。

先にGIF画像で結果を見せるとこんな感じさね。

f:id:NagoyaITAdmin:20211208155941g:plain

「ボタン」ボタンを押すと、10秒後までそのまま「まだだ!」が出てて、
10秒後になると「GOGOGOGOGOGO!」に文字列を変更させるっつー話。
これがPowerAppsで命令を待機させとくソレ。

さらっとね。

つくってみた。

 

さて、じゃあどうやったのかというとだ。

 

ちなみに。

上のGIF画像はPPTをつかった。

最近のパワーポイントってすげえ。

っつー話。

 

さて、じゃあ軽くどうやって実装したかをお見せしよう。

1.まずPowerAppsのアプリつくるね?

2.まっさらなキャンパスに色んなパーツを配置する。

3.ロジックを組み込んでいくうっ!

4.ボタンを押して見守る

 

1 に関しては、もうわかるね?

わからなかったら僕の過去のブログを読んでみよう。

すみからすみまで!

僕の全てを知ってもらえれば、嬉しいな!

てへ☆

 

2.まっさらなキャンパスに色んなパーツを配置する。

じゃあ、まっさらなキャンパスに好きな絵を描こうか。

・・・違うね?
まっさらなキャンパスにただ絵を描き続けている 
だけじゃアプリは完成しない。

 

まずは僕の言う通りにやってみようか。

僕が優しくつつみこんであげようじゃないか。

まずは+アイコンを押してみよう。

ん?どこにあるかって?

あーマウスから手は離さないで大丈夫。

僕が君の手ごと包み込んで教えてあげる。

え?どうしたの?

恥ずかしいのかい?

恥ずかしがるこたぁないさ。

いいんだよ。

もっと身をゆだねてくれて。

 

f:id:NagoyaITAdmin:20211214154841p:plain

まずは画面の左にある「+」アイコンを押してみよう。

大丈夫かい?

まだブログを閉じてないかい?

よーし良い子だ。

 

じゃあ次は、こんな順番でアイテムを追加していこう。

 1.テキストラベル

 2.テキスト入力

 3.ボタン

 4.入力 の中の タイマー

 5.テキストラベル

 6.テキスト入力

 7.テキストラベル

場所?いいよ。

君の好きに配置して。

君の、好きにして、

いいんだよ。

そうだ。上手にできたねえ。

ご褒美にあとで500円あげようね。

f:id:NagoyaITAdmin:20211221112636p:plain

配置した後で、配置場所とか色とか変えたらこんな感じになったかな
文字は当然何も入ってないと思うけど。

 

で、オジサンの画面をよく見てほしい。

画面の左っ側。

Label1とかLabel2とかじゃないよね?

と、いうことで、次はやらなくてもいいんだけど、
できればやってほしい。

もし君が数か月後にまだこのアプリを残していて、
中身を見た時に混乱しないようにやっておきたいことだ。

 

今追加したそれぞれのアイテムに名前をつけてあげよう。

例えばこんな感じに。

 1.テキストラベル(Label-Subject)

 2.テキスト入力(TextInput-SleepTime)

 3.ボタン(Button1)

 4.入力 の中の タイマー(Timer1)

 5.テキストラベル(Label-Sore)

 6.テキスト入力(TextInput-Check)

 7.テキストラベル(Label-Result)

ボタン君とタイマーちゃんは、

今回1個しか出てこないから名前つけてないけど、

実際にアプリつくる場合は複数回出てくるかもしれないから、

是非とも君たちはしっかりと名前をつけてあげてほしい。

 

さて、じゃあ名前をつけてくれたら

実際にロジックを組み込んでいこう。

ロジックってなんだろうね。

まあ簡単に言ったらプログラムを書いてみようってことだね。

 

とはいえ、まずどこで何がしたいのかを

視覚的にわかりやすくしてあげようと思います。

 

ラベルちゃん達をまずいじります。

最初の「1.Label-Subject」君。

この子の Text に

"説明
待機させたい秒数を入力せよ"

こんな感じでどうだい。

f:id:NagoyaITAdmin:20211214160436p:plain

1.Label-Subject のTextに値を入れてあげる。中身は任意だよ。

簡単だね。

でも、大事だよね、こういうのってさ。

僕たちの関係も、こういう簡単なところから初めてみないかい?

嫌かい?

そうかい。

 

じゃ次な。

5.Label-Sore な。

さっきと同じ感じで適当に何か書いといて。

わかんべ?

"↓今何時(進捗確認)用のソレ。"

とか書いときゃいいんだよ。

あん?

態度が急変?

知らねえし。

画像もねえ?

バーロー。

試練だよ試練。

想像力で補えっつー話。

 

・・あれ?

君は・・誰だい?

え?今来たのかい?

なぁんだー!

遅れてくる子がいるなんて聞いてなかったからさぁ!

よし!じゃあ今途中なんだけど、最初っからやろうか!

ね!

よし!

じゃあまずはPowerAppsのアプリを作成するよ!

 

・・・

 

ということでここまでついて来れたかな?

じゃあここで、さっき自由気ままに配置してもらったけど、
画面の構成として見づらいとアレだから、
追加アイテムをこんな感じでざっくりでかまわないので、
一応並べてみようか。

f:id:NagoyaITAdmin:20211214161420p:plain

はい。追加したやつらを適当に並ばせました。センスが光るねえ

背景色とかも適当に色付けしてみてもいいかもね!

気分がノってくるよね!

 

じゃあ実際にロジックらしい部分に手を入れてみよう!

まずは、3.ボタン君!

君に決めた。

まずはボタンにこんな感じで設定してもらおう。

f:id:NagoyaITAdmin:20211214161831p:plain

ボタン君に書くロジック

UpdateContext({varRuns:0});

UpdateContext({varStartTimer:true})

これでOK。
 これはね、詳しくはMicrosoftさんの公式ページを見てもらうのが早いんだけど、
 ざっくりいうと、最初の列に関しては
 「君がボタンを押した回数とかを、一時的に格納する」の。
 何に格納するのって?それが、カッコの中の文字列。
 今回は varRuns さんというお名前にしたよ。

 <Microsoftさん公式>

Power Apps の UpdateContext 関数 - Power Apps | Microsoft Docs

 これを参考に二行目にも何が書いてあるか考えてみよう。

 

次にすすもう。

次は、テキスト入力の 2.TextInput-SleepTime ちゃん。

この子の OnChange に以下の文字列を書こう。

UpdateContext({varLoopEnd:Value('TextInput-SleepTime'.Text)})

f:id:NagoyaITAdmin:20211214162207p:plain

TextInput-SleepTimeちゃんのOnChange。

また出てきたね、UpdateContextさん。

こんなに短期間で何回も出会ったなら、

もうこれは知り合いじゃなくてダチだよね。

これからもよろしく!


そしたらそのまま OnChange じゃなくて Default に次の値を書いてね。

varLoopEnd

f:id:NagoyaITAdmin:20211214162345p:plain

TextInput-SleepTimeのDefaultの値。

よくできましたね。


じゃあ次は、4.タイマーちゃんにも手をだすよ!

タイマーちゃんにはね、4箇所いじってもらいます。

1つ目。Duration = 1000 にしてあげる。

2つ目。Start = varStartTimer にしてあげる。

3つ目。Repeat = If(varRuns>= varLoopEnd - 1,false,true)

4つ目。OnTimerEnd = UpdateContext({varRuns:varRuns + 1});
If(varRuns>= varLoopEnd-1,UpdateContext({varTimerStart:false}))

にしてあげる。

 

さて。これで主軸は完了だ。

この英語の文字列が何をどう指定しているのかって?

そいつぁウナギに聞いてくれぇい!

・・・うそうそ。

興味があったらコメント欄にでも書いてもらえれば説明するぜ!

二人っきりで、話し合おうや。

いやホント、説明してもいいんだけど、
とりあえずは自分のインターネット環境を使って、

自分でGoogEdgeブラウザを使って、Bingってくれよな。

その方が絶対覚えるからさ。

もしそれでもわからなかったらマジで連絡してきてくれ。

優しくご指導承る。

 

 

さてと。

これだけで十分なんだが、ボタンを押して本当に動いているか不安になるよね。

確認したくなるよね。

ITって信じられないもんね。

わかるよ。気持ちはすごくわかる。

僕も(?)文系出身で

「変数って何だよ!ざけんなクソが!日本語使いやがれ!
 あ、変数は日本語か。
 じゃあせめて通常の人間にわかる文章で書けやボケ!」

とか憤ってた側の人間だから。

だからオジサン、わかりやすくしてみた。

 

まずは 6.TextInput-Check のDefaultに、Text(varRuns) と書いてみよう。

f:id:NagoyaITAdmin:20211214163527p:plain

TextInput-Check のDefaultの値に Text(varRuns) と書く。

そしたら次は、7.Label-Result のTextの値に 

If('TextInput-SleepTime'.Text = Text(varRuns),"GOGOGOGOGOGO!","まだだ!")

と書いてみよう。

まあこれが味噌だよね。つけて味噌かけて味噌だよね。

 

さて、ここまできたらPowerAppsのアプリ画面の右上の方の

ボタンで再生してみよう。

上の入力する欄
(僕はちょっとカッコつけたくて、背景黒で白文字に設定しちゃってる)
に数字で10とか20とか書いてみようか。

え?全角はダメだよ!

全角を自動的に半角に変えるロジックもあるけど、

今回は実装してないからね!

f:id:NagoyaITAdmin:20211214164014p:plain

10って入力してみた。これでボタン押すと?

で、ボタン押すと。

f:id:NagoyaITAdmin:20211214164155p:plain

下の数字があがったねー

さて。どうだい?

10まで進んだかな?

進んだら「まだだ!」

の文字が

「GOGOGOGOGOGO!」

にかわったかな?

 

f:id:NagoyaITAdmin:20211221120314p:plain

下の赤い数字が10になって「まだだ!」も変わったかな?

 

ほうら。

できちゃったね。

10秒待たせて命令出さす

的なことが。

 

PowerAppsでのSleepは完了だ!

 

まあ、なんていうんだろうか。

正確には SLEEP ではないよね。

ずっと動かし続けてるし、

なんなら最終的に if文 で

 Aの値がBと一緒になったら表示する文字列を変えてるだけだしね。

ボタンと結果のテキストラベル以外を非表示にしたら、

ユーザーからはそう見えるべ。

それでいいべさ。

文句あっか?

ねぇべ?

もしございましたら、どうぞコメント欄に

お気軽に書き込んでくださいませ。

むしろ、スーパーエンジニアからの

「こんな方法もあるんじゃね?」

「**をXXXした方がいいんじゃね?」

「アキヒサよく頑張ってるんじゃね?」

的なコメント、切望しております。

あ。

誹謗中傷以外でお願いいたします。

 

 

◆PowerAutomateで Sleep を実現できるか検証 

さて。

やったことない。

 

し、やろうとしたことない。

(だからやったことないんだろうけど。)

 

マジ至難なんだけど。

マジ至難の業。

マジナンシーのザーワー。

 

1から考えなくちゃいけないってゆーかぁ

むしろ0からじゃね?

それって、IT初心者向けっていうより、

プロ開発者向けじゃね?

って感じ。

 

もう、とかそういうのかなぐり捨てて、

飛び込んでいくね。

 

受け止めてくれ。

 

最悪、受け流してくれてもいいから、

せめて骨くらいは拾ってもらって、

できれば海の見える丘から海に向かって撒いてくれさい。

 

じゃ、はじめよう。

 

 

1.まずPowerAutomateつくるね?

2.まっさらなキャンパスに色んなパーツを配置する。

3.ロジックを組み込んでいくうっ!

4.ボタンを押して見守る

一緒だね。PowerAppsと。

やってみよう。

ここからは今まさにブログを書きながら同時進行で行う、

僕の未知の世界への第一歩と、

試行錯誤の履歴だ。

 

 

さて、PowerAutomateの画面を開こう。

f:id:NagoyaITAdmin:20211214173643p:plain

PowerAutomateの画面開いた。マジでブログ書きながら同時進行でチャレンジ中。

で。

0から作ってもいいが、

どうせなら先人達のお力添えもいただきたいし、

既に用意されているテンプレートを参考に、やるだけやってみたいと思う。

テンプレート画面を開く。

f:id:NagoyaITAdmin:20211214170335p:plain

PowerAutomate。テンプレートの全ての画面。

なんかもう、テンプレートいっぱいありすぎてマジ意味不。

ちょっと絞ろう。せめて。

 

なんでもいいけど「ボタン」にしてみっか。

f:id:NagoyaITAdmin:20211214170435p:plain

テンプレートの「ボタン」で絞った。

よし。

絞った。

 

 

・・・

 

 

 

 

・・・おん?

 

 

f:id:NagoyaITAdmin:20211214170550p:plain

・・・おん?

 

 

 

・・・あー・・・

 

 

 

んんんん?

 

 

f:id:NagoyaITAdmin:20211214170627p:plain

おんや?

 

なんか、アレじゃね?

 

ある意味、これじゃね?

中身見てねぇからアレだけどさ。

 

10分待たせてね?

Sleepしてんじゃね?

中身見てねぇからアレだけど。

 

まあ落ち着いて開いてみよう。

選択してみた。

f:id:NagoyaITAdmin:20211214170809p:plain

はいドン。シンプルだね。

遅延及び通知

 

遅延及び

 

遅延

 

ちぇん!

 

もう、いいかな。

ブログここで終えて。

 

受け止め方次第ではこれSLEEPだよね。

 

まあ、もう少し詳しく見てみようか。

「フローの作成」ボタン押してみた。

 

で、編集画面出してみた。

f:id:NagoyaITAdmin:20211214171158p:plain

テンプレートの編集画面。

3つあるうちの、真ん中見てごらんよ。

 

Delay。

 

でぃれい。

こいつだろこいつ。

 

あんじゃん。

もうさ、そういうパーツがあんじゃんけ。

 

とはいえ。

 

とはいえだ。

実は、中で色々なプログラムが200行くらい書かれて、

どうにかこうにか無理やり実装されているだけかもしれない。

 

心してかかろう。

 

いざ!

おーぷん!

 

f:id:NagoyaITAdmin:20211214171401p:plain

ででんっ!

2行。

 

 

カウント:10

単位:分

 

 

 

 

 

2行っつー話。

 

 

 

 

 

 

 

 

 

 

あー

 

 

 

 

 

 

 

 

 

ね。

 

 

 

 

 

 

 

 

 

うん。

 

 

 

 

 

 

 

よし。

 

 

 

 

 

 

 

 

終了!

 

 

PowerAutomateでのSLEEP実装、終了ーー!

おつかれちゃんやでホンマ。

 

一応、単位のところ開いてみた。

f:id:NagoyaITAdmin:20211214171717p:plain

わぁー!こんなに単位が色々あるんだー!秒 から ヶ月 まで!

ヶ月て。

いや ヶ月 て君。

PowerAutomate君のこと待たせすぎちゃう?

「あなたの事が好き!」 って言われたはいいものの、

「返事は10ヶ月後に聞かせて!」 って言われるような感じ?

イカレじゃん。

 

まあでもアレか。

Teamsのチームが作成されてから6ヶ月後に

「まだこのチーム、使ってますか?」みたいなメッセージを

自動的に送ったりすれば、

チームの乱立を防ぐ手助けになったりするかな。

他に使い道?

ちょっと見当たらねぇな。

見つけたら教えてくれよ。

~~~ 本 題 終 了 ~~~

 

いやぁー

 

まさかの結末だったね!

 

今回はハラハラドキドキからの、

想像だにしない急展開!

という、最高なストーリー仕立てになったのではないでしょうか。

 

ありがてぇなあ。

Microsoftのテンプレート作ってくれた人。

これ、俺が知らないだけで、PowerAppsにも

そーゆーテンプレートあったりしねぇかな。

さすがにねぇか。

 

以上、本日のアキヒサでした!

 

 

 

P.S ありがとう、去年の僕。

去年の僕がちゃんとブログ書いててくれたから、

今年の12月にも書く事が見つかりました。

いやーほんとありがとう!

 

僕ー

 

あ。

 

あと、読者のみなさんもね。

一応ね。

ありがとな。

また、見てくれよな。

 

みんなも Good SLEEP!!!

 

メリクリ!

そして

よいお年を!

 

 

本当のP.S

わからないとこや不満がありましたら

気軽にコメント欄にでも書いてください!