« GeoGebraで傾いていない楕円を描く ~数学的解説編~ | トップページ | Microsoft Power Automateで日付素因数分解ボットを作ってみた »

2020年10月13日 (火)

Microsoft Power AutomateやIntegromatで曜日を漢字1字で出力する

 「ツイッターでいいね!したら、そのつぶやきをEvernoteに送る」「特定のサイトが更新されたらメールで通知する」などのようにウェブ上の活動を自動化してくれるウェブ連携サービスが世の中には存在します。日本では「IFTTT」(イフト)がおなじみで、数年前から僕もありがたく利用しています。

201013_pic01
現在動かしているIFTTTのレシピです。

 そんなときでした。IFTTTが2020年9月に有料プラン(サブスクリプション化)を発表し、同時に今までの無料プランの機能が大幅に制限される事態になったのです。有料プランに加入する、他のサービスに移行する、……などなど対処を検討するためにも情報を集めなくてはなりません。その中で「Microsoft Power Automate」(旧名称:Microsoft Flow)や「Integromat」というウェブ連携サービスの存在を知るに至りました。

 Microsoft Power AutomateやIntegromatはかなり自由度が高く、IFTTTでは叶わなかったようなことも可能です。
 ここ数日、両サービスを触っているうちにノウハウが溜まってきました。備忘録を兼ねてここに公開することにします。

 今回取り上げるのは「曜日の漢字1字表示」です。

 Microsoft Power Automate、Integromatは共に日時の書式が充実しています。Microsoft Power AutomateIntegromatの公式解説ページをちょいと覗いてみるだけでもうかがい知ることができるでしょう。
 充実してはいるのですが、残念ながら曜日の日本語表記についての言及はありません。が、これだけ機能があるのだからどうにかなるはず。その思いであれこれいじっていたらどうにかなりました。

Microsoft Power Automateで曜日を漢字1字で出力する

 核心からまいりましょう。Microsoft Power Automateで曜日を出力するには次のような式を用意します。

Microsoft Power Automateで曜日を出力する式
createArray('日','月','火','水','木','金','土')[dayOfWeek(<time>)]

201013_pic02
現在の時刻を取得し、それを曜日に変換します。動的コンテンツのウィンドウを開き、そこに上の式をコピー&ペーストしました。画像はdayOfWeek関数の引数である<time>部分に「現在の時刻」を入れようとしているところです。

201013_pic03
正しく設定ができるとcreateArrayで始まる式が1つにまとまるはずです。カーソルを合わせると式の内容が表示されます。

 dayOfWeek(<timestamp>)は曜日を数値として返す式関数です。日曜日は0、月曜日は1、…、土曜日は6として返ってきます。公式解説はこちらです。

 createArray(<object1>, <object2>, ...)は配列を作ります。ここではcreateArray('日','月','火','水','木','金','土')とすることで曜日の配列を作りました。createArrayについての公式解説へもリンクを貼っておくことにしましょう。

 あとは両者を組み合わせるだけ。
 配列から値を抽出する公式解説が見当たらないので、代わりに以下のブログ記事を紹介することにします。

 さて、実際に使うとなると「2020年10月13日(火)」のような書式が多いでしょうか。現在の時刻を取得して、それを先の書式に変換するフローです。

201013_pic04
201013_pic05
ツイッターに今日の日付を曜日付きでつぶやくためのフローです。年月日部分と曜日部分とで別の式を設けています。

 ツイートテキスト欄には

ツイートテキスト欄
今日は <式1>(<式2>) です。

と入力してあります。<式1>部分は次のようになっています。

<式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>部分は先程の応用です。

<式2>部分
createArray('日','月','火','水','木','金','土')[dayOfWeek(convertFromUtc(body('現在の時刻'),'Tokyo Standard Time'))]

 <式2>の前後にある半角丸カッコは、たとえば「金」を「(金)」のようにするためです。半角丸カッコである必然性はありません。<式2>曜日のように設定すれば「金曜日」と表示させることも可能です。

 このフローを実際に動かしてみると次のようになります。

201013_pic06
フローを動かした日の日付&曜日が入っています。

Integromatで曜日を漢字1字で出力する

 続いてIntegromatで曜日を漢字1字で出力する方法も紹介しましょう。

Integromatで曜日を出力する式
{{get("{月火水木金土日}"; formatDate(<time>; "E"; "Asia/Tokyo"))}}

 上記では波カッコ{}や引用符""がありますが、上の式をコピー&ペーストすると下の画像の通り波カッコや引用符は表示されません。直接打ち込む場合には、関数は入力パネルから選び、引数は引用符なしで入力してください。

201013_pic07
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で「****年*月*日(*)のライフログ」というタイトルのノートを作る設定です。

201013_pic08
Evernoteに「****年*月*日(*)のライフログ」というタイトルのノートを作るシナリオの過程。Contentは適当に書いてみました。

 Titleは次のようになっています。

Integromatで「****年*月*日(*)のライフログ」と表示する式
{{formatDate(now; "YYYY年M月D日"; "Asia/Tokyo")}}({{get("{月火水木金土日}"; formatDate(now; "E"; "Asia/Tokyo"))}})のライフログ

 実際にこのシナリオを動かすと次のようなノートが作られます。

201013_pic09
Evernoteにライフログノートができた様子。


 Microsoft Power Automate、Integromatは共に設定の自由度が高い反面、「え、こんなこともできないの!?」ということもしばしばです。利用者、ならびに、情報発信者が増えていけば、こうした不満も減っていくでしょうか。そんな展開を期待しています。この記事がそんな展開の一助になれば幸いです。

« GeoGebraで傾いていない楕円を描く ~数学的解説編~ | トップページ | Microsoft Power Automateで日付素因数分解ボットを作ってみた »

ウェブサービス」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« GeoGebraで傾いていない楕円を描く ~数学的解説編~ | トップページ | Microsoft Power Automateで日付素因数分解ボットを作ってみた »

個人的注目の数学問題集

無料ブログはココログ