今週もすっげーヤダけど仕方なく出勤してきました。
出勤じたいもイヤなのですが、付随する作業も面倒だな。と思っていたのがコレ。
私の職場では、週単位で翌週の予定を報告するルールがあります。
こんな感じに。
これ、毎週送るのが面倒なんですよね。
私は毎週●曜日は出社と決めているわけではないので特に。
テンプレート作っておけばいいじゃん。と思われるかもしれません。
このメールをそのままテンプレートにして使うとしても、毎回書き換えないといけない箇所が3つもあります。
- 件名に書いている日付
- 本文に書いている日付
- それぞれの日の予定(出社、テレワーク、休暇etc)
どこか一箇所でも書き換えを忘れると再送です。めんどくせえ。
めんどくさいを解消する方法を考え、
報告フォームを作り
フォームから、翌週の「出社する日」「休む日がある場合、いつ休むのか」を送ったら
メールを作って送ってくれる
という仕組みを作りました。
このフォームの質問に答えていくと
あのメールになります。
メールの作成には、Microsoftの自動化サービス「Power Automate」を使いました。
私のTwitterアカウントを「日刊神戸のお嬢様」に改造したアイツです。
私の仕事は1だけ。
- 報告フォームから、翌週の出勤する日(と、あれば休む日)を送信する
- プレッドの翌週一週間分の予定表を作る
- 予定表をメールで送る
1のフォームを作る作業と、2と3をやらせるための下準備が面倒なのですが、それは一度だけ。
下準備さえ済ませてしまえば後は楽になります。
この記事はこんな方におすすめ→
- 出社orテレワークの予定を、定期的に報告する相手がいる
- 出社する(テレワークする)曜日を固定していない
- 手での報告が面倒
この記事で分かること→
Microsofot FormsとPower Automateを組み合わせて使って、報告メールを送るためのメールフォームを作る方法
はじめに前提条件
これから作る予定報告フォームは以下の前提条件で作ります。
- 仕事をするのは毎週月曜日から金曜日
- 月~金のどこか一日だけ出社する
- 出社する曜日は固定しない
- 出社しない日はテレワーク
- 不定期に休暇を取る
- 月~金の祝日(会社は休み)は考慮しない
前提条件を変える場合は(一日だけテレワークにするとか)
Microsoft Formの中身、PowerAutomateにやらせる動きを変えてください。祝日は、あっても年数会のことなのに毎週「来週は祝日がない」って考えるのがめんどくさいので、考慮するのをやめました。
予定報告フォームの作り方
PowerAutomateくんに私の予定を教えてあげるため、まずは予定報告フォームを作ります。Microsoft Formsを使って作りました。
Microsoft Forms自体の使い方はとても簡単で、はじめてでも画面を見たままで作っていけます。
Google Formsとか、他社製品を使ったことがあればなおさら。
おさらいがてら作り方を記載していきます。
今回は設問がかんたんなので、スマホで十分作れます。
まずはhttps://forms.office.com/ へアクセスし、Microsoftアカウントでログインします。
アカウントがなければその場で作成できます。
ログインしたら「新しいフォーム」から新規のフォームを作ります。
①フォームのタイトルを決める
「無題のフォーム」となっているところはフォームのタイトルです。何をやるために使うフォームなのか、パッと見てわかる名前にしておけば良いと思います。
「+新規追加」を押して質問を設定していきます。
②月曜日の日付をPowerAutomateに教えてあげる
「+新規追加」を押すと追加する質問の種類を選べます。
「日付」を選びます。
「質問」を書き換えます。
まずPowerAutomateくんに教えてあげたいのは、「あなたに伝えるのは●月●日(月)からx日(金)までの予定ですよ」ということ。
「●月●日(月)」がいつなのか、フォームを使ってPowerAutomateくんに教えてあげます。
よって、まずは月曜日の日付はいつなの? を聞く質問を作ります。
火曜日から金曜日の日付は、後でPowerAutomateくんに計算させます。
必ず聞きたい質問は「必須」をオンにしておきましょう。
「必須」をオンにすると回答をすっ飛ばせません。
③いつ出勤するのかPowerAutomateに教えてあげる
質問を設定できたら「+新規追加」を押して次の質問を作ります。
また質問の種類を「日付」にして、今度は出勤する日を聞きます。
④休暇を取るのか取らないのか、PowerAutomateに教えてあげる
「+新規追加」を押して次の質問を作ります。
次に選ぶのは「選択肢」です。
前の質問で、PowerAutomateくんに月曜日の日付を教えてあげました。
その月曜日から金曜日の間に、休暇を取る日はあるの? もPowerAutomateくんに教えてあげます。
質問を作ったら「+新規追加」します。
質問の種類を「日付」にして、休む日を聞きます。
ここで、前に作った質問「休む日ある?」に戻ります。
いつ休むのかは、休む日がない週は聞く必要がありません。
休む日が「ある」と回答したときだけ、いつ休むかを聞く。
休む日が「ない」場合はこれ以上何も聞かない。ができるようにします。
「必須」の右隣の「・・・」を押して「分岐を追加する」をやっておきます。
分岐を作ったら「戻る」を押して、質問を作る画面へ戻ります。
これで、PowerAutomateくんに私の予定を教えてあげるために必要な質問を設定できました。
作ったフォームをチェックしよう
できたフォームは「プレビュー」で実際の回答画面のレイアウトを確認できます。
しっくり来ないな…と思った箇所があったら変えておきます。
「スタイル」を選ぶと背景の色、デザインを変更できます。
フォームが完成したら、「回答の収集」を押してフォームに回答する時のURLを取得しておきます。
私はここでコピーしたURLを、会社のPCのブラウザにブックマークしています。
PowerAutomateフローの作り方
ここからはPowerAutomateの出番です。
スマホのPowerAutomateは見にくいので、パソコンで操作がオススメ。
報告フォームで埋めた内容を基に
①PowerAutomateが動き出すトリガーを決める
②予定を連絡するメッセージの文面を作る
- 作った文面を送信
をやってもらうフローを作ります。
日刊たんたんさんを作ったときはテンプレートを使いましたが、今回は新規に一から作ってみます。
Microsoftアカウントを持っていない場合は作成します。
画面の指示通りにログインを進めたら、[+作成」をクリックします。
①フローが動き出すトリガーの種類を決める
トリガーというのはPowerAutomateが仕事を始めるきっかけのことです。
特定のイベントが起きた時?
指定した時刻になったら?
つど、手動で指令を送る?
きっかけはいろいろ設定できます。
今回は特定のイベント=作っておいたフォームから予定を送った が起きた時に働いてほしいので「自動化したクラウドフロー」を選びます。
フロー名は、何をやっているのか端的に表せればいいでしょう。文章でも構いません。
フロー名を入力した欄の下は検索ボックスになっています。
ここでは、何が起こったらPowerAutomateが動き出すの? の「何が」を決めます。
「Microsoft Forms」と入力して「何が起こったら」の候補を絞り込みます。
「新しい応答が送信されるとき」を選んでください。
フロー名とトリガーを選ぶ画面をスクロールすると「作成」があります。
フロー名を決め、トリガーを選んだら「作成」を押して次へ。
②Microsoft FormsからPowerAutomateに情報を渡す
いよいよフローを作り込んでいきます。
まず先頭に来ているのは、フローが動くトリガーです。
「新しいステップ」をクリックして次の動きを指定します。
なんかすげえいっぱい出てきました。
この画面では、PowerAutomateと連携しているシステムたちから
何のシステムを選んで
何をさせるのか
命令を作ります。
検索ボックスに「Microsoft Forms」と入力し「何を選んで」の部分を絞り込みます。
「Microsoft Forms」がヒットするのでそれをクリック。
「応答の詳細を取得する」を選びます。
この時点では、私が送った予定の情報はMicrosoft Formsが持っています。
この操作によって、FormsからPowerAutomateに情報が渡ります。
③PowerAutomateが時刻を勘違いしているので、誤解を解く
ここからは、Microsoft Formsからゲットした情報を加工していきます。
フォームから月曜日の日付は送っているので、それを基に火曜日、水曜日…の日付を計算していく…前にやることがあります。
PowerAutomateくんてば、プレッドがフォームから送った日付を日本時間だと思っていません。
フォームから送った日付を、日本時間に読み替えるよう言ってあげないとです。
ふたたび「新しいステップ」をクリックして
今度は「日時」で検索し、「タイムゾーンの変換」を選びます。
「基準時間」にカーソルを当てると(または、「動的なコンテンツの追加」をクリックすると、Microsoft Formsから受け取ったデータを扱えるようになります。
「月曜日の日付」を選択します。
他の箇所は以下の通り、埋めました。
基準時間 月曜日の日付
書式設定文字列 MM月dd日
変換元のタイムゾーン 協定世界日時
変換先のタイムゾーン UTC+9:00 大阪、札幌、東京
書式設定文字列」は日付を「6月12日」と書くか「6/12」と書くかという違いなので、お好みで。
協定世界日時が2種類ありますが、私が使っているのは「協定世界日時-11」の方です。PowerAutomateがどっちを使っているか分かっていません。(私が)
時差9時間でも11時間でも日付は一緒でしょ。と思ってここはテキトーです。
何時何分までの時間も正確に計算しようと思うと、そうはいかないのですが。
⑤火曜日から金曜日の日付を計算せよ
さて、月曜日の日付を日本時間に直すことができました。
月曜日の日付に+1して火曜日の日付を出します。
やっぱり協定世界日時が出てくるので、これも日本時間に直します。
「新しいステップ」を押す→「日時」で検索→「時間への追加」を選びます。
今度の基準時間は月曜日の「変換後の時間」です。
これに+1日して火曜日の日付を出します。
「タイムゾーンの変換」をもういちど使います。
基準時間を火曜日の「算出時間」にして、協定世界時から日本時間へ変換します。
月曜日の日付に+nして日本時間に直すのを繰り返して、水曜日から金曜日の日付も出します。
+2して水曜日
+3して木曜日
+4して金曜日
もう何もかも誤解しているので、地道にひとつずつ誤解を解いていきます。
そろそろ疲れてきた
これで終わり! と言いたいところですがまだ準備段階です。
しかも、まだPowerAutomateくんが五回している部分が残っています。
出勤する日も「タイムゾーンの変換」を使って協定世界時から日本時間へ変えておきます。
⑥変数を作る
次は「変数」を使います。
Microsoft Formsから送った回答は、出社する曜日が毎回変わります。
休む曜日もあります。
Microsoft Formsから「●月×日(月)はテレワークで、次の▲日(火)は出社」と送っても、
PowerAutomateが作るメールの文面が「月曜日は出社」で固定されてしまうと困る訳です。
そもそも毎週●曜日に出勤て決めていたら、このフォームもPowerAutomateもいらねえんだよ
固定されてしまうと困る値を表現するために使うのが変数です。
PowerAutomateにはこういう文面のメールを送ってね。と教えておいて
Microsoft Formsから受け取った回答に応じて、変数1~5の中身を「出社」「テレワーク」「休暇」に書き換えられるようにしておきます。
本格的にプログラミングやるのでもなければ、ここの理解は大雑把でいいと思います。
私は「数学の方程式で出て来た代数xの文章バージョン」「状況に応じていい感じに中身を書き換えてくれる便利な子」と、割とテキトーな理解をしています。
そんな変数をPowerAutomateで使うには、例によって「新しいステップ」から
「変数」で検索し、「変数の初期化」を選びます。
ここでやるのは「月曜日」という名前の変数を作るよ! と宣言するだけです。
名前 月曜日
種類 文字列(文章を入れるので)
値 空白
と入れ、命名の儀を行います。
値が空白なのは、後の工程で「出社」「テレワーク」「休暇」を嵌めるからです。
「月曜日」という名前の変数を作ったら、同じ要領でを火曜日から金曜日までと、メールの件名と本文で使う分、合計で7つの変数を作ります。
⑦休暇を取るか取らないかで、やることを変える
変数を作ったら「新しいステップ」で次の動きを決めます。
次は休暇を取る日を日本時間に変えます。
が、休暇は取る週と取らない週があるので、休暇を取る週だけ、休暇の日を日本時間に変える動きをさせます。
つまりこういうこと。
条件によってやることを変える処理もPowerAutomateで実現できます。
「新しいステップ」を押して
「条件」というキーワードで検索して「コントロール」を選びます。
「コントロール」の中に「条件」がいます。
Microsoft Formsで次の質問「いつ休む?」で休む日付を聞きました。
Formsで聞いておいた日付を、「タイムゾーンの変換」を使って日本時間に変換します。
「アクションの追加」を押します。
「タイムゾーンの変換」を使って休む日を日本時間に変換します。
⑧月曜日~金曜日の変数に「出社」「休暇」「テレワーク」を嵌めていく
もうしばらく「条件」の使用が続きます。
ここが一番めんどくさいです。
でもここを乗り切れば、毎週メール手打ちから逃れられるのでがんばってください。
次の作る分岐はこれ。お察しの通り月曜日から金曜日の分まで、×5個作ります。
がんばってやっていきましょう。
「条件」を使って月曜日の「変換後の時間」と出勤する日の「変換後の時間」を比べ、等しいかどうかを見ます。
「はい」だったら=等しかったら、「アクションの追加」を押します。
「新しいステップ」を押した時と同じく、操作を検索する画面が出て来ます。
「変数」で検索し「文字列変数に追加」を選択します。
「文字列変数に追加」が変数に値をはめる操作です。
変数の「名前」は、前の工程で命名しておいた変数たちの中から選びます。
「月曜日」を選びます。
「いいえ」の場合は「アクションの追加」を押して「条件」を選びます。
月曜日の「変換後の時間」と休暇を取る日の「変換後の時間」を比べ、等しいかどうかを見ます。
「はい」だったら“月曜日の「変換後の時間」(月) 休暇“という文言を「文字列変数に追加」します。
これを月曜日から金曜日まで、5日分繰り返します。
設定するところ、あと1つだけなのでがんばってください。
⑨予定を知らせるメールを作って送る
ここまでの工程で、予定を知らせるメールを出す下準備ができました。
いよいよメールの中身を作っていきます。
うちのメールソフトはoutlookなので「outlook」と検索し、「メールの送信」を選びます。
メールの宛先
メールの件名
メールの本文
を埋めます。
テストも兼ね、宛先はまず、自分のアドレスだけ入れることをお勧めします。
ちゃんと狙った通りにPowerAutomateが動くことを確認してから、後で書き換えましょう。
件名と本文はプレッドの場合は
件名に、月曜日の「変換後の時間」と金曜日の「変換後の時間」を入れ、いつからいつまでの予定なのかを分かるようにしています。
本文はひたすら ●曜日の変数<br> の羅列。
本文の<br>は改行したいという意味で入れています。
ここまでできたら「保存」して終了です。お疲れ様でした!
フローができたら動作確認をお忘れなく
フローができたら、テストとして実際にMicrosoft Formsから
テストなので架空の予定でいいです。
送る相手は自分だけにしておかないと、痛い目を見ます。
ちゃんと自分にメールが届いたことを確認してから、宛先を変えましょう。
この仕組みを作るために私は昼休みを潰しました。
3分かけていた作業を30秒にするための下準備に、一時間。
費用対効果はイマイチかもしれませんが、
メールの文面を毎回打ち直すのめんどくさい!
どこか間違えたら送り直すのもめんどくさい!
この二大めんどくさいをなくせたのは、私にとっては時間短縮以上の収穫でした。
私は「めんどくさいけど一回●分で終わるならいいや」って思えないんです。
「めんどくさい」って思ったら、めんどくさい作業をやらずに済む方法を探します。
予定の報告は職場のルールで「めんどくさいからやりません」て訳にいかないので、ちょっとでも楽をする方法を考えて、こうなりました。
いちばんめんどくさいのは出社そのものなんですけどね!