PowerAutomateで自由にデザインして投稿し、ユーザーのアクションも取れるアダプティブカード。
デザイナーがあるから簡単だよ、と人には言われますけど全然簡単じゃありませんよ(笑)
ちょびちょび勉強していますが追いつきません。
使えそうなアダプティブカードのひな型を備忘録で置いておきます。
アダプティブ カードを投稿して応答を待機する

{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.5",
"body": [
{
"type": "TextBlock",
"size": "Medium",
"weight": "Bolder",
"text": "承認のご確認",
"wrap": true
},
{
"type": "TextBlock",
"text": "以下の内容について、承認可否を選択し、必要に応じてコメントを入力してください。",
"wrap": true
},
{
"type": "Input.Text",
"id": "comments",
"label": "コメント(任意)",
"isMultiline": true,
"placeholder": "理由や補足があれば入力してください。"
}
],
"actions": [
{
"type": "Action.Submit",
"title": "承認する",
"data": {
"submitAction": "ApprovalResponse",
"approvalResult": "Approve"
},
"style": "positive"
},
{
"type": "Action.Submit",
"title": "承認しない",
"data": {
"submitAction": "ApprovalResponse",
"approvalResult": "Reject"
},
"style": "destructive"
}
]
}一覧表
FactSet を使うと一覧表のように表示可能です
タイトルと値を横に並べて、あとは行数に応じて縦並べ。
{
"type": "FactSet",
"facts": [
{"title":"依頼内容","value": "{依頼内容}"},
{"title":"依頼者","value": "{依頼者}"},
{"title":"コード","value": "{コード}"}
]
},増減させる場合は } の後の , の増減を忘れずに!(一番最後の } には , は不要)
なお、value部分はマークダウンが利用可能なので、以下のようにすることも。
{
"title": "詳細",
"value": "**重要**: [リンクはこちら](https://example.com)"
}結果取得
「作成」アクションに以下の式を入れると動的コンテンツになり、「承認する」「承認しない」のどちらを押下したのか結果を取得できます。
@{outputs('アダプティブ_カードを投稿して応答を待機する')?['body/data/approvalResult']}アダプティブカードの body の中の data にある approvalResult を拾ってきて、という意味ですね。
承認する:Approve
承認しない:Reject
条件分岐する場合
「アダプティブカードを投稿して応答を待機する」の直後に条件分岐を入れて扱いたい場合は以下の通り。
- 承認された場合をtrueにしたい場合
左側
outputs('アダプティブ_カードを投稿して応答を待機する')?['body/data/approvalResult']中央
等しい右側
Approve※解説:承認する、のapprovalResultに入っている値が Approve だから
逆に「承認しない」をtrueにする場合は値を Reject と設定しているので、こちらを使う
コメントを取得する場合
下記を「作成」とかに入れて、動的コンテンツとして扱う
@{outputs('アダプティブ_カードを投稿して応答を待機する')?['body/data/comments']}同じアクション内にある「メッセージの更新」は、応答結果を表示させるときのカスタマイズではなく、単純なテキスト表示のみ。同一アクション内の動的コンテンツは取得できません。
しかも横幅が見切れる可能性が高いため、長いメッセージを書くこともできません。
結果表示が欲しいのであれば、次以降のアクションで実施しましょう。
チャネル内のメッセージで応答する、が一番使い勝手が良いかも。
承認/否認②
Teams投稿時の見え方は以下の通り
[承認依頼] (太字・大きめ)
以下の内容について承認/却下を選び、コメントを記入してください。
案件名: ○○プロジェクト備品購入
申請者: 山田太郎
金額 : 180,000円
期限 : 2026-03-05
補足資料
ノートPC×3台。在庫逼迫のため至急。
[コメント(必須) __________________________]
[承認] [却下]コピペ用のコードは以下
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.4",
"msteams": { "width": "Full" },
"body": [
{
"type": "TextBlock",
"text": "承認依頼",
"wrap": true,
"size": "Large",
"weight": "Bolder"
},
{
"type": "TextBlock",
"text": "以下の内容について承認/却下を選び、コメントを記入してください。",
"wrap": true,
"spacing": "None"
},
{
"type": "FactSet",
"facts": [
{ "title": "案件名", "value": "${案件名}" },
{ "title": "申請者", "value": "${申請者}" },
{ "title": "金額", "value": "${金額}" },
{ "title": "期限", "value": "${期限}" }
]
},
{
"type": "TextBlock",
"text": "補足資料",
"wrap": true,
"weight": "Bolder",
"spacing": "Medium"
},
{
"type": "TextBlock",
"text": "${説明}",
"wrap": true
},
{
"type": "Input.Text",
"id": "comment",
"label": "コメント(必須)",
"isMultiline": true,
"placeholder": "理由や注意点を記入してください",
"maxLength": 2000
}
],
"actions": [
{
"type": "Action.Submit",
"title": "承認",
"data": { "action": "approve" }
},
{
"type": "Action.Submit",
"title": "却下",
"style": "destructive",
"data": { "action": "reject" }
}
]
}日程の確認
Teams投稿での見え方は以下の通り
[日程確認のお願い]
候補日時を入力し、参加可否を選択してください。
件名 : クラウド移行キックオフ
場所/会議URL : https://teams.microsoft.com/l/meetup-join/...
所要時間 : 60分
日付(必須): [ 2026-03-04 ▼ ]
開始時刻 : [ 10:00 ▼ ]
参加可否(必須)
(•) 参加
( ) 別候補希望
( ) 不参加
備考(任意)
[_______________________________]
[回答を送信]コピペ用は以下
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.4",
"msteams": { "width": "Full" },
"body": [
{
"type": "TextBlock",
"text": "日程確認のお願い",
"size": "Large",
"weight": "Bolder",
"wrap": true
},
{
"type": "TextBlock",
"text": "候補日時を入力し、参加可否を選択してください。",
"wrap": true,
"spacing": "None"
},
{
"type": "FactSet",
"facts": [
{ "title": "件名", "value": "${件名}" },
{ "title": "場所/会議URL", "value": "${場所またはURL}" },
{ "title": "所要時間", "value": "${所要時間}" }
]
},
{
"type": "Input.Date",
"id": "date",
"label": "日付(必須)"
},
{
"type": "Input.Time",
"id": "time",
"label": "開始時刻(必須)"
},
{
"type": "Input.ChoiceSet",
"id": "attendance",
"label": "参加可否(必須)",
"style": "expanded",
"isMultiSelect": false,
"choices": [
{ "title": "参加", "value": "yes" },
{ "title": "別候補希望", "value": "alt" },
{ "title": "不参加", "value": "no" }
]
},
{
"type": "Input.Text",
"id": "note",
"label": "備考(任意)",
"isMultiline": true,
"placeholder": "別候補を希望の場合は都合の良い時間帯を記入"
}
],
"actions": [
{
"type": "Action.Submit",
"title": "回答を送信",
"data": { "action": "schedule_response" }
}
]
}通知
Teamsでの見え方
[【重要】本日の締切リマインド] (赤系背景のコンテナ)
本日17:00までに月次報告の提出をお願いします。
対象 : 全営業部
提出形式 : SharePointのテンプレート
担当 : 営業企画グループ
詳細手順・テンプレートはこちら:
提出手順とテンプレートを開く(リンク)
[提出ポータルを開く] [提出済みとマーク]コピペ用は以下
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.4",
"msteams": { "width": "Full" },
"body": [
{
"type": "Container",
"style": "attention",
"items": [
{
"type": "TextBlock",
"text": "【重要】本日の締切リマインド",
"weight": "Bolder",
"size": "Large",
"wrap": true
},
{
"type": "TextBlock",
"text": "本日17:00までに月次報告の提出をお願いします。",
"wrap": true,
"spacing": "Small"
},
{
"type": "FactSet",
"facts": [
{ "title": "対象", "value": "全営業部" },
{ "title": "提出形式", "value": "SharePointのテンプレート" },
{ "title": "担当", "value": "営業企画グループ" }
]
},
{
"type": "TextBlock",
"text": "詳細手順・テンプレートはこちら:",
"wrap": true,
"spacing": "Small"
},
{
"type": "TextBlock",
"text": "[提出手順とテンプレートを開く](${リンクURL})",
"wrap": true,
"color": "Accent"
}
]
}
],
"actions": [
{
"type": "Action.OpenUrl",
"title": "提出ポータルを開く",
"url": "${リンクURL}"
},
{
"type": "Action.Submit",
"title": "提出済みとマーク",
"data": { "action": "mark_submitted" }
}
]
}