LoginSignup
1
1

もう二度と勤怠入れ忘れない(PowerAutomate→Teams→kintone)

Last updated at Posted at 2024-04-09

はじめに

よく勤怠入れ忘れて怒られてるまとっちです。
もう怒られたくないです。

この記事の対象者

  • 勤怠をよく忘れる人
  • PowerAutomateからkintoneレコードを追加+更新したい人
  • PowerAutomateからの質問に対して、Teamsで入力・選択させたい人

背景

この1年間、月2~3のペースで勤怠忘れをしてました。
「次は気を付けます」って言って、次の日に勤怠忘れる人なので、システム化します。
image.png

作ったシステム

システムの流れ

① PowerAutomateで月~金の9:30に定期実行
② Teamsのアダプティブカードで本日のToDo入力と勤務形態を選択
③ kintoneの勤怠アプリにレコード追加+ステータスを稼働中に更新
image.png

詳細設定

以降に詳細設定を説明しておりますが、kintone勤怠アプリにレコードを登録するために、今回自分が作った仕様をベースにしているので、一部不要な項目もあります。

新しいフローで、スケジュール済みクラウドフローを選んで、月~金9:30で設定する。
image.png

アクションで、Teamsアダプティブカードの月日表示の値・kintoneの出勤時刻の値を作る。
image.png

アクションで、Teamsアダプティブカードの曜日表示の値を作る。
image.png

曜日の作り方
前のアクションで作った日本時間を使って、下記の通り関数を設定する。

if(equals(dayOfWeek(body('日本時間')), 0), '日', 
    if(equals(dayOfWeek(body('日本時間')), 1), '月', 
        if(equals(dayOfWeek(body('日本時間')), 2), '火', 
            if(equals(dayOfWeek(body('日本時間')), 3), '水', 
                if(equals(dayOfWeek(body('日本時間')), 4), '木', 
                    if(equals(dayOfWeek(body('日本時間')), 5), '金', 
                        if(equals(dayOfWeek(body('日本時間')), 6), '土', '')
                    )
                )
            )
        )
    )
)

※ あとで気付いたのですが、アダプティブカードの選択結果のようにスイッチで曜日を条件分岐させた方が、視覚的に分かりやすいフローになるかなと思いました。

アダプティブカードを投稿して応答を待機する。
image.png

アダプティブカードの作り方
JSONで作る必要があります。アダプティブカードデザイナーにJSONを入力すれば、どんな感じのアダプティブカードが表示されるか見ることができます。

以下、自分が作ったアダプティブカードのJSONです。参考にしてください。
※前のアクションで作った月日と曜日を使ってます。

{
    "type": "AdaptiveCard",
    "body": [
        {
            "type": "TextBlock",
            "size": "Medium",
            "weight": "Bolder",
            "text": "@{body('月日')}(@{variables('曜日')})の出勤"
        },
        {
            "type": "Image",
            "url": "https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgucdpWPL4khu8aOKtZKvhl1WGJI6zM-18YBrkorHwaSpIoArZYTRYmKYdph2SD5IPgOzQzX_dsvO8k4GruTrpwwEYa5T0MZ0fze9vT3oa2bV0OxfmjRe3YOhtGQhOcBlAvuy4sD4H3hfBO/s400/skip_businessman.png",
            "size": "Large",
            "horizontalAlignment": "Center"
        },
        {
            "type": "Input.Text",
            "id": "userInput",
            "placeholder": "本日やることを記載",
            "isMultiline": true
        }
    ],
    "actions": [
        {
            "type": "Action.Submit",
            "title": "オフィス出勤",
            "data": { "workType": "Office" }
        },
        {
            "type": "Action.Submit",
            "title": "在宅勤務",
            "data": { "workType": "Home" }
        },
        {
            "type": "Action.Submit",
            "title": "働きたくないでござる",
            "data": { "workType": "Holiday" }
        }
    ],
    "horizontalAlignment": "Center",
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.2"
}

アダプティブカードの選択結果で条件分岐して、kintoneの勤務形態の値を作る。
勤務形態が休暇以外の時は、後続のkintone操作フローに進む。
image.png

kintoneの勤怠アプリにレコードを追加する(ここまでのアクションの値を使う)。
HTTPリクエストで、追加したレコードのステータスを稼働中に更新する。
image.png

kintoneレコード更新のHTTPリクエストの作り方
詳しくは、cybozu developer network「1 件のレコードのステータスを更新する」を見て設定をしてください。

以下、自分が作った設定です。参考にしてください。

URL:https://(ドメイン名).cybozu.com/k/v1/record/status.json
Method:PUT
Headers:X-Cybozu-API-Token → (勤怠アプリのAPIトークン)
     Content-Type → application/json
Body:
{
  "app": (アプリID),
  "id": @{outputs('アプリにレコードを追加')?['body/id']},
  "action": "(ステータス更新のアクション名)",
  "assignee": "(作業者に設定するユーザーのログイン名)"
}

できあがったシステム

最初にお見せしましたが、できあがったシステムはこちらです。
image.png

おわりに

これでもう怒られなくて済みます。

1
1
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
1
1