はじめに
この記事は、Power Apps Advent Calendar 2022 12月6日(火)担当分の記事です。
qiita.com
数か月前、「在宅勤務開始します」アプリをPower Appsで作りました。
在宅勤務用に、ワンタップでTeamsに業務開始する旨を投稿して、Outlook予定表に「在宅勤務」の予定を登録するアプリをPower Appsで作ったのだけど、チームのメンバーに使っていただけるようになった!嬉しい😌
— ゆり@PowerPlatform勉強中 (@yuRi_67lily) 2022年9月15日
シンプルなアプリだけど、誰かに使ってもらえるのは幸福感がすごい\( 'ω')/ pic.twitter.com/IuD1oiHM3G
私が所属している会社のチームでは、在宅勤務の開始時と終了時にTeamsでその旨を投稿する習慣があります。
また、Outlookの予定表にも終日で「在宅勤務」という予定を入れる必要があり、わずかな作業ではありますが、もっと楽にできたらいいなと思っていました。
そこで、Power Appsのボタンで朝のTeams投稿とOutlookの登録を同時にできるのでは?と思い、「在宅勤務開始します」アプリを作ってみました。
今回はその作り方を共有したいと思います!
アプリ全体図
今回は、主に②、⑤、⑦、⑨のコントロールについて解説します。
また、キャンバスアプリでアプリを作成します。
用意するもの
Teamsに投稿するPower Automateフロー
Teamsに投稿する仕組みはPower Automateで作っていました。
ボタンコントロールで使うことになりますので、予め作っておきましょう。
1.Power Appsの左上の「Power Automate」メニュー>「フローの追加」>「フローを新規追加する」をクリックします。
2.「+ 一から作成」をクリックします。
3.「+新しいステップ」から「Microsoft Teams」>「チャットまたはチャネルでメッセージを投稿する」をクリックします。
トリガーの「Power Apps」は特に何もしません。
投稿先はグループチャットとチャネルを選べますので、好きなものを選んでください。
私はグループチャットを選択して、以下のようにしました。
フローに名前を付けて保存すれば、フローの作成は以上で完了です。
アプリ作成手順
予定表を選択するドロップダウン
上の「挿入」メニューから「ドロップダウン」を選択し、「Items」プロパティに以下を設定します。
Office365Outlook.CalendarGetTables().value
これでドロップダウンから「予定表」を選ぶことで、自身のOutlook予定表に登録することができます。
Outlook予定表に登録&Teamsに投稿するボタン
上の「挿入」メニューから「ボタン」を選択し、「OnSelect」プロパティに以下を設定します。
//Today()で0時を取得しStartTimeに設定 Set(StartTime,Today()); // StartTimeより1,440分後の24:00をendTimeとして設定 Set(endTime,DateAdd(StartTime,1440,Minutes)); //Text関数でStartTimeとEndTimeを"yyyy-mm-dd Thh:mm:ss"の書式に変更 Office365Outlook.V4CalendarPostItem(drpCalenderSelection.SelectedText.Name,"在宅勤務", Text(StartTime,"yyyy-mm-dd Thh:mm:ss"), Text(endTime,"yyyy-mm-dd Thh:mm:ss"), "(UTC+09:00) Osaka, Sapporo, Tokyo", {showAs: "free",isAllDay: true} ); //showAsはbusy:予定あり、oof:退席中、workingElsewhere:他の場所で勤務中、free:空き時間、tentative:仮の予定 // isAllDayのパラメーターをtrueに設定し、終日の予定として登録する //Power Automateのフローを起動 'おはようございます。業務開始します。'.Run()
Set関数を用いて、Outlook予定表に入れたい開始時間と終了時間を設定します。
Office365OutlookのV4CalenderPostItem関数を用いることで、Power AppsからOutlookに予定を入れることができます。
Power Automateのフローは、'フロー名'.Run()で実行することができます。
Outlook予定表のみ登録するボタン
上の「挿入」メニューから「ボタン」を選択し、「OnSelect」プロパティに以下を設定します。
「Outlook予定表に登録&Teamsに投稿するボタン」からフロー実行の記述をなくすだけです。
//Today()で0時を取得しStartTimeに設定 Set(StartTime,Today()); // StartTimeより1,440分後の24:00をendTimeとして設定 Set(endTime,DateAdd(StartTime,1440,Minutes)); //Text関数でStartTimeとEndTimeを"yyyy-mm-dd Thh:mm:ss"の書式に変更 Office365Outlook.V4CalendarPostItem(drpCalenderSelection.SelectedText.Name,"在宅勤務", Text(StartTime,"yyyy-mm-dd Thh:mm:ss"), Text(endTime,"yyyy-mm-dd Thh:mm:ss"), "(UTC+09:00) Osaka, Sapporo, Tokyo", {showAs: "free",isAllDay: true} ); //showAsはbusy:予定あり、oof:退席中、workingElsewhere:他の場所で勤務中、free:空き時間、tentative:仮の予定 // isAllDayのパラメーターをtrueに設定し、終日の予定として登録する
アプリの実行
アプリを保存して実行し、ボタンを実際に押してみましょう。
Teamsの指定した場所に投稿され、Outlook予定表に終日で「在宅勤務」の予定が入りました。
私は「空き時間」として予定に入れたので、一番上に表示されています。
おまけ
Outlook予定表に時間指定で予定を入れたいとき
さきほど紹介したのは「終日」で予定を入れる方法ですが、時間指定で入れたい場合もあるかと思います。
例えば、8:45-17:30の時間で入れたい場合は、「OnSelect」プロパティに以下を指定しましょう。
//Todayで取得した時刻は0時となるため、0時から起算して525分後の8:45をStartTimeとして設定 Set(StartTime,DateAdd(Today(),525,Minutes)); // StartTimeより525分後の17:30をendTimeとして設定 Set(endTime,DateAdd(StartTime,525,Minutes)); Office365Outlook.V4CalendarPostItem(drpCalenderSelection.SelectedText.Name,"在宅勤務", Text(StartTime,"yyyy-mm-dd Thh:mm:ss"), Text(endTime,"yyyy-mm-dd Thh:mm:ss"), "(UTC+09:00) Osaka, Sapporo, Tokyo", {showAs: "Oof"} )
DateAdd関数を用いて加算することで、任意の時間を指定することができます。
さいごに
「在宅勤務開始します」アプリを作るとき、やまさんの記事に参考にさせていただきました。
qiita.com
2020年にコロナ禍で在宅勤務が始まった頃、こちらの記事を見つけPower Appsアプリを作れた時はすごく感動しました。
些細な作業をアプリで自動化し、実際にアプリが動くと楽しいですよね。
皆さんもよろしければ作ってみてください!
Power Apps Advent Calendar、初参戦でした!ありがとうございました!