0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Power Automate + Forms + Onedrive + Excel online で作る勤怠システム(Power Automate 編)

Posted at

目次

はじめに

 本記事を見つけて頂き、ありがとうございますm(_ _)m
 本記事では、Power Automate(web) + Forms + Onedrive + Excel online で作る勤怠入力システムのPower Automateの部分についてです。
 ナンバリングとしては本記事が最後です。
qiita3.png

フロー

 図の通りです。
 (もっとスッキリ、きれいな並びがあるかもです)
qiita_PA_1.png

フロー詳細

フロー図より降順で解説します。

①新しい応答が送信されるとき

  • 勤怠入力フォームに回答が入るとフローが動きます。
    qiita_PA_2.png

②応答の詳細の取得

  • ①トリガーとなったFormsの回答内容を取得します。
    qiita_PA_3.png

③作成

  • 関数を用いて、回答したユーザー名(Microsoftアカウント)から社員番号を抽出します。
    qiita_PA_4.png

  • 関数は以下の通りです。

substring(outputs('応答の詳細を取得する')?['body/responder'], 2, 4)
  • 上記のsubstring関数は、所定の位置よりカウントされる文字を抽出します。
    • 今回は「ユーザー名の3文字目から4文字を取得」しています。
    • 本記事ではMicrosoftアカウントを「ABxxxx@onmicrosoft.com」設定しています。そのためAB「xxxx」@...つまり社員番号を取得しています。
    • 「3文字なのに2」なのは「1文字目=0」となっているためです。
  • また、「outputs('応答の詳細を取得する')?['body/responder']」は「動的値の responsder's email」 のことです。

④フォルダ内のファイル検索

  • ③で作成した社員番号を用いてOndedrive内にある同社員番号をファイル名に持つタイムシート(Excel)を検索します。
    qiita_PA_5.png

⑤タイムゾーンの変換

  • 入力時刻を取得します。この時刻はタイムシートにおける更新時刻のことです。
  • Automateはデフォルトでは日本時間ではないので変換する必要があります。
    qiita_PA_6.png

⑥IDの初期化(変数を初期化する)

  • ④で検索したファイルのID(文字が不規則に羅列されているパス)を格納する変数を作成します。
  • 変数に格納しなくても大丈夫そうですが、各アクションで生成されるものが文字列か数字(整数or実数)なのかよく分からないので、関数を用いて確実かつ都合のいいように変換します。
  • 図のように設定ください。
    qiita_PA_7.png

⑦IDの設定(変数の設定)

  • ⑥で作成した変数に④で検索したファイルのIDを格納します。
  • apply to eachは自動的に生成されるので、いきなり設定を行って大丈夫です。
    qiita_PA_8.png

⑧テーブル名の初期化・⑨テーブル名の設定

  • ⑩でテーブルを選択する項目があるので、テーブル名を格納する変数を初期化し、設定します。
  • ⑩において入力するファイルが決まっていればテーブルの選択が可能なのですが、今回は「動的=決まっていない」ので入力が可能である変数をねじ込みます。変数だけど固定値、偽変数と呼んでます。
    qiita_PA_9.png
    qiita_PA_10.png

⑩表に行を追加

  • ⑦をより編集するタイムシート及びテーブルを選択します。

  • テーブル欄が「カスタム値」となっていますが、中身は関数です。選択し、鉛筆マークをクリックすると動的な値を入れることができます。
    qiita_PA_11.png

  • テーブルが定まっていない場合、挿入したい列(項目)をAutomateが参照してくれません。なので当て振りを行います。

    • 記入方法は以下の通りです。
{ 
 "列名1":動的な値 or 固定値,
・
・
・
"列名n":動的な値 or 固定値,
}

以上で、automateは完成です。

まとめ

 今回はAutomateについての内容となりました。今回で記事は終了となります。少しでも参考になれば嬉しいです。
 また、本内容に限らず一度に全体を作成し動かそうとすると上手くいかないことがあるので、トリガーを手動にし一部のみを動かすフローを作りテストすることをオススメします。

余談

OnederiveとSharepointの違い

 OnedriveとSharepointのファイル・フォルダ検索は仕様が異なります。Onedriveは階層を深堀りした検索が行えるのですが、Shrepointはできませんでした。
 ID(パス)の仕様が異なるそうで、そのせいでSharepointでは位置フォルダ内でしか検索が行なえませんでした。使い方によっては問題はないと思いますが、個人フォルダをつくりその中のファイルを検索した場合をSharepointでは行えないのでご注意ください。
※もし、実は可能であれば詳しい方がいましたらご教授頂けると助かります。

automateの処理時間

 Excelに使用されている関数に左右されます。一度に多くの方が利用するとなれば様々な関数を変えて実験することをオススメします。(本フローは30秒ほどかかります。)
 特にFilter関数を用いた場合ですと、なんとタイムアウトしました...。(式の作り方にもよりますが)

リンク

参考文献

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?