Microsoft Power AutomateやIntegromatで曜日を漢字1字で出力する
「ツイッターでいいね!したら、そのつぶやきをEvernoteに送る」「特定のサイトが更新されたらメールで通知する」などのようにウェブ上の活動を自動化してくれるウェブ連携サービスが世の中には存在します。日本では「IFTTT」(イフト)がおなじみで、数年前から僕もありがたく利用しています。
そんなときでした。IFTTTが2020年9月に有料プラン(サブスクリプション化)を発表し、同時に今までの無料プランの機能が大幅に制限される事態になったのです。有料プランに加入する、他のサービスに移行する、……などなど対処を検討するためにも情報を集めなくてはなりません。その中で「Microsoft Power Automate」(旧名称:Microsoft Flow)や「Integromat」というウェブ連携サービスの存在を知るに至りました。
Microsoft Power AutomateやIntegromatはかなり自由度が高く、IFTTTでは叶わなかったようなことも可能です。
ここ数日、両サービスを触っているうちにノウハウが溜まってきました。備忘録を兼ねてここに公開することにします。
今回取り上げるのは「曜日の漢字1字表示」です。
Microsoft Power Automate、Integromatは共に日時の書式が充実しています。Microsoft Power AutomateやIntegromatの公式解説ページをちょいと覗いてみるだけでもうかがい知ることができるでしょう。
充実してはいるのですが、残念ながら曜日の日本語表記についての言及はありません。が、これだけ機能があるのだからどうにかなるはず。その思いであれこれいじっていたらどうにかなりました。
Microsoft Power Automateで曜日を漢字1字で出力する
核心からまいりましょう。Microsoft Power Automateで曜日を出力するには次のような式を用意します。
createArray('日','月','火','水','木','金','土')[dayOfWeek(<time>)]
現在の時刻を取得し、それを曜日に変換します。動的コンテンツのウィンドウを開き、そこに上の式をコピー&ペーストしました。画像はdayOfWeek関数の引数である<time>部分に「現在の時刻」を入れようとしているところです。
正しく設定ができるとcreateArrayで始まる式が1つにまとまるはずです。カーソルを合わせると式の内容が表示されます。
dayOfWeek(<timestamp>)
は曜日を数値として返す式関数です。日曜日は0、月曜日は1、…、土曜日は6として返ってきます。公式解説はこちらです。
createArray(<object1>, <object2>, ...)
は配列を作ります。ここではcreateArray('日','月','火','水','木','金','土')
とすることで曜日の配列を作りました。createArray
についての公式解説へもリンクを貼っておくことにしましょう。
あとは両者を組み合わせるだけ。
配列から値を抽出する公式解説が見当たらないので、代わりに以下のブログ記事を紹介することにします。
- Microsoft (Office365) Flow のデータの参照方法について整理する - 新しいことにはウェルカム
- Power Automateでハマるポイント - MoreBeerMorePower
- Power Automate アレイ(配列)型変数 - 誰でもできる業務改善講座
さて、実際に使うとなると「2020年10月13日(火)」のような書式が多いでしょうか。現在の時刻を取得して、それを先の書式に変換するフローです。
ツイッターに今日の日付を曜日付きでつぶやくためのフローです。年月日部分と曜日部分とで別の式を設けています。
ツイートテキスト欄には
今日は <式1>(<式2>) です。
と入力してあります。<式1>
部分は次のようになっています。
convertFromUtc(body('現在の時刻'),'Tokyo Standard Time','yyyy年M月d日')
取得した「現在の時刻」はタイムゾーンを変えておらず、GMT(グリニッジ標準時)のままです。タイムゾーンを変えるときに活躍する関数がconvertFromUtc
です。
この関数はconvertFromUtc(<timestamp>, <timezone>, [<format>])
の形で使います。
第2引数である<timezone>
にはタイムゾーンの名前が入ります。日本(GMT+09:00)のタイムゾーンにするにはTokyo Standard Time
と入力してください。なお、公式解説ではタイムゾーン一覧を参照するように求められているのですが、ここを見るとうっかり16進indexを入力したくなってしまいます。なんてまぎらわしいのでしょう……。
第3引数の<format>
は省略可能です。ここではyyyy年M月d日
と設定してみました。
<式2>
部分は先程の応用です。
createArray('日','月','火','水','木','金','土')[dayOfWeek(convertFromUtc(body('現在の時刻'),'Tokyo Standard Time'))]
<式2>
の前後にある半角丸カッコは、たとえば「金」を「(金)」のようにするためです。半角丸カッコである必然性はありません。<式2>曜日
のように設定すれば「金曜日」と表示させることも可能です。
このフローを実際に動かしてみると次のようになります。
Integromatで曜日を漢字1字で出力する
続いてIntegromatで曜日を漢字1字で出力する方法も紹介しましょう。
{{get("{月火水木金土日}"; formatDate(<time>; "E"; "Asia/Tokyo"))}}
上記では波カッコ{}
や引用符""
がありますが、上の式をコピー&ペーストすると下の画像の通り波カッコや引用符は表示されません。直接打ち込む場合には、関数は入力パネルから選び、引数は引用符なしで入力してください。
Integromatで曜日を漢字1字で表示するための設定で、上記の式をそのままコピー&ペーストしたところです。例としてEvernoteに設定していますが、何でも構いません。
formatDate(<time>; <format>; [<timezone>])
は、<time>
を<format>
で指定した書式で表示する関数です。公式解説へもリンクしておきましょう。
<format>
としてE
を設定すると曜日を数値として返してくれます。Microsoft Power Automateとは少し異なり、月曜日なら1、火曜日なら2、……、日曜日なら7を返します。上でも1回リンクを貼りましたが、詳しくはこちらをご覧ください。
[<timezone>]
は省略可能な引数で、タイムゾーンを指定することができます。日本(GMT+09:00)のタイムゾーンはAsia/Tokyo
です。他の地域のタイムゾーンについてはウィキペディアのこの記事にある表で「TZ database name」を見てください。
続いてget
です。これはget(<object or array>; <index or path>)
の形で使います。……と、さも詳しいかのように書きましたが、公式の解説を読んでも要領を得ず、適当に試行錯誤したら成功しただけです。
実際の使用例として先程と同じく「2020年10月7日(水)」のように表示してみましょうか。Evernoteで「****年*月*日(*)のライフログ」というタイトルのノートを作る設定です。
Evernoteに「****年*月*日(*)のライフログ」というタイトルのノートを作るシナリオの過程。Contentは適当に書いてみました。
Titleは次のようになっています。
{{formatDate(now; "YYYY年M月D日"; "Asia/Tokyo")}}({{get("{月火水木金土日}"; formatDate(now; "E"; "Asia/Tokyo"))}})のライフログ
実際にこのシナリオを動かすと次のようなノートが作られます。
Microsoft Power Automate、Integromatは共に設定の自由度が高い反面、「え、こんなこともできないの!?」ということもしばしばです。利用者、ならびに、情報発信者が増えていけば、こうした不満も減っていくでしょうか。そんな展開を期待しています。この記事がそんな展開の一助になれば幸いです。
« GeoGebraで傾いていない楕円を描く ~数学的解説編~ | トップページ | Microsoft Power Automateで日付素因数分解ボットを作ってみた »
「ウェブサービス」カテゴリの記事
- Microsoft Power Automateで日付素因数分解ボットを作ってみた(2020.10.27)
- Microsoft Power AutomateやIntegromatで曜日を漢字1字で出力する(2020.10.13)
- IFTTTがEvernoteに追記してくれない不具合が発生し、それを解決するまでのアレコレ(2020.06.26)
« GeoGebraで傾いていない楕円を描く ~数学的解説編~ | トップページ | Microsoft Power Automateで日付素因数分解ボットを作ってみた »
コメント