経緯
pythonやcronを使って定期実行を試みたもののPCがスリープ状態では実行できない。AWSやMicrosoft Azureなどを使うと実現できるが,通知回数によっては料金が発生する。自分の環境で無料でできる方法はないかと探したところこの方法に至った。
こんな人におすすめ
- PCがスリープ状態でも定期的に通知を送りたい
- クラウドコンピューティングサービス(AWSやMicrosoft Azureなど)を使うと料金が発生する不安がある
- 有償のMicrosoft 365が使えるアカウントを持っている
- LINEアカウントを持っている
実現の流れ
- Power Automateで時間指定と変数の初期化
- Power Automateで条件分岐
- LINE Notifyでアクセストークン発行
- Power Automateに通知の部分を付け足す
Power Automateで時間指定と変数の初期化
「フローの実行時間と頻度の決定」「現在の曜日と日数を取得」
-
[作成] → [スケジュール済みクラウド フロー]
-
[フロー名] free → [開始日] free → [繰り返し間隔] 1日 → [作成]
この部分は後から編集可なので,そこまで慎重にならなくても大丈夫です。
-
[Recurrence] → [パラメーター] → [Time Zone] (UTC+09:00)大阪,札幌,東京 → [Start line] free,最後のZを消す
-
[Recurrenceの下の+] → [アクションを追加] → [ランタイム] 組み込み → [Variable] → [変数を初期化する]
-
[Name] 曜日 → [Type] Integer → [Value] dayOfWeek(addHours(utcNow(),9,'yyyy/MM/dd HH:mm')) → [更新]
dayOfWeek():曜日を取得します。
addHours(utcNow(),9,'yyyy/MM/dd HH:mm'):9時間遅らせて日本時間にします。
上記で取得される曜日の結果は以下の様になります。
-
上記の4,5と同じ手順で 変数を初期化する の下に 変数を初期化する1 を追加する
[Name] 日数,[Value] dayOfMonth(addHours(utcNow(),9,'yyyy/MM/dd HH:mm'))にしてください。
dayOfMonth():日数を取得します。
addHours(utcNow(),9,'yyyy/MM/dd HH:mm'):9時間遅らせて日本時間にします。
上記で取得される起動日の結果は 「1〜31」 のいずれかになります。
週数と日数の関係は以下のようになります。
Power Automateで条件分岐
-
[変数を初期化する1の下の+] → [アクションの追加] → [Control] → [条件]
-
[ANDの部分をORに変える] → [雷のマーク] → [曜日] → [is equal to] → [2] → [+New item] → [雷のマーク] → [曜日] → [is equal to] → [5]
これで,毎週火曜日(2)と金曜日(5)に任意の処理を行ってくれます。
-
1,2と同様の手順で条件1を追加(以下の図を参考)
場所:条件→False→条件1
ただし,ANDのままでいいです。
毎週月曜日(1)に任意の処理を行ってくれます。
-
1,2と同様の手順で条件2を追加(以下の図を参考)
場所:条件→False→条件1→True→条件2
ORに変えずに,必ずANDのままにしてください。
毎月第3月曜日に任意の処理を行ってくれます。(曜日が1 & 日数が15以上21以下)
-
1,2と同様の手順で条件3を追加(以下の図を参考)
場所:条件→False→条件1→False→条件3
ただし,ANDのままでいいです。
毎週水曜日(3)に任意の処理を行ってくれます。
-
1,2と同様の手順で条件4を追加(以下の図を参考)
場所:条件→False→条件1→False→条件3→True→条件4
ORに変えずに,必ずANDのままにしてください。
毎月第1水曜日に任意の処理を行ってくれます。(曜日が3 & 日数が1以上7以下)
-
1,2と同様の手順で条件5を追加(以下の図を参考)
場所:条件→False→条件1→False→条件3→True→条件4→False→条件5
ORに変えずに,必ずANDのままにしてください。
毎月第3水曜日に任意の処理を行ってくれます。(曜日が3 & 日数が15以上21以下)
LINENotifyでアクセストークンの発行
「LINE Notify アクセストークンの発行」と検索すれば詳しいやり方を説明してくれているサイトがたくさん見つかるのと思うので,その手順に従って発行してください。
ーー私が参考にさせて頂いたサイトーー
LINE Notifyのトークンを取得方法・備忘録
Power Automateに通知の部分を付け足す
-
[条件→Trueの下の+] → [アクションの追加] → [HTTP]
-
[パラメーター] → [URL] https://notify-api.line.me/api/notify → [Method] POST → [Header] Content-Type:application/x-www-form-urlencoded,Authorization:Bearer LINE Notifyトークン → [Body] message=今日は燃やすごみの日です
* BearerとLINE Notifyトークンの間は必ず半角スペースを空けてください。
* 緑のマークの隣を押すと名前の変更ができます。ここでは「毎週火・金曜日」に変更しています。
* 二つ目の隠れている部分は各ごみの分別方法のurlを添付しています。良かったら,webサイトから「燃やすごみ分別」などと調べてそのurlを添付してみてください。
-
[毎週火・金曜日を右クリック] → [アクションのコピー] → [任意の場所(下記に記入)で+] → [アクションの貼り付け] → [毎週火・金曜日を毎週月曜日に通知する内容へと編集]
-
3と同様の手順で毎月第3回目月曜日を追加
場所:条件→False→条件1→True→条件2→毎月第3回目月曜日
-
3と同様の手順で毎月第1回目水曜日を追加
場所:条件→False→条件1→False→条件3→True→条件4→True→毎月第1回目水曜日
-
3と同様の手順で毎月第3回目水曜日を追加
場所:条件→False→条件1→False→条件3→True→条件4→False→条件5→True→毎月第3回目水曜日
-
3と同様の手順で何もない日を追加
場所:二箇所あります。
条件→False→条件1→False→条件3→True→条件4→False→条件5→False→何もない日
条件→False→条件1→False→条件3→False→何もない日
最後に
以上で終了です。
テストで実行できたら,RecurrenceのStart lineを現在の時間から5分程度後に変えて,PCを閉じてみてください。指定した時間に通知が来たら成功です!!