店舗巡回報告を Microsoft Forms で収集し、Power Automate を使って Word報告書を自動生成 → Teamsに送信する仕組みを試作しました。
※PowerAutomateとPowerAutomateDesktopの違いもいまいちよくわからない完全初心者なので全部ChatGPTに聞きながら作っていきました。
助けてChatGPT!
試作物内容
はじめに:
スマホで店舗視察報告を完成させたい
出張に行った際には、店舗を5~10店舗程度回るのですが、大量にとった写真を後から報告書に整理しなおすのがかなり面倒。
スマホで店舗巡回~報告書作成までできれば、移動中(店舗間の距離1時間くらいを車移動する)に9割仕事が終わるな~と思ったことをきっかけに、スマホ完結報告書ツールを作ってみました。
ツール選定理由
①入力:Forms
・画像投稿できる
・社外秘の内容もあるかもので会社でセキュリティ上問題なく使えるマイクロソフト系
・普段から使っていて馴染みがある
②出力:Word
・普段出張報告はWordで報告書本編と別紙で店舗視察報告を付けたものを作り、PDFで提出
・現行の形をなるべく崩さずに自動化させたかったので、別紙部分のWord作成を自動化させる形にした
③自動化:PowerAutomate
・会社のパソコンにはみんなOffice365が入っていてPowerAutomateが入っている
→手順書化して誰でもまねできるようにすることを目標にPowerAutomateを使用。
・Forms→Word(Onedrive or sharepoint)→ Teamsとクラウド完結のフローの自動化。
④報告先:Teams
・複数名で出張に行ったときには手分けして店舗視察報告を書いたりすることもある。
→個人宛ではなくチームで利用しているTeamsチャネル宛に通知が行くようにした。
初心者なので作り方はChatGPTにお任せ
ChatGPTに以下のプロンプトを打ち込んで、相談しながら作りました。
目指すゴール
- Forms入力 → Word報告書作成 → Teamsチャット送付まで全自動化
- ファイル名は「店舗名_日付時刻.docx」で一意化
ChatGPTと相談しながら作った最終的なシステム全体図
A[Forms: 店舗巡回報告] --> B[Power Automate]
B --> C[応答詳細取得]
C --> D[JSON解析 (画像リンク抽出)]
D --> E[OneDriveファイル取得]
E --> F[Wordテンプレート差し込み]
F --> G[OneDriveに保存 (店舗名_日付時刻.docx)]
G --> H[Teamsチャットに投稿]
1. 事前準備
1-1. Microsoft Formsアンケートフォーム

★質問構成は「詳細」をクリック
[Q1] 巡回日
[Q2] 会社名
[Q3] 店舗名(テキスト)
[Q4] 総評(テキスト)
[Q5] 店舗画像1(画像) → 必須
[Q6] 店舗画像1の説明(テキスト)
[Q7] 店舗画像2(画像) → 必須
[Q8] 店舗画像2の説明(テキスト)
Point:画像を必須に設定し、PowerAutomateでの空データ受け取り時の条件分岐の必要性を排除。(任意にしたいのですが条件分岐で空扱いにならずエラー多発の為苦肉の策です)
1-2. Wordテンプレート

テンプレートでは自動的にFormsの回答を入力したい箇所に、コンテンツコントロール(プレースホルダー)を設定。
★コンテンツコントロールの設定について知りたい方は「詳細」をクリック
巡回日:Text_巡回日
店舗名:Text_店舗名
店舗総評:Text_店舗総評
店舗画像1:Image1
店舗画像1の説明:Text1
店舗画像2:Image1
店舗画像2の説明:Text2
- テキストコンテンツコントロール
WordはOneDrive for Business に保存し、Power Automate から参照できる状態にします。
2. Power Automateフロー構築
2-1.フロー全体
- トリガー:Forms新規応答
- 応答詳細を取得
- JSONの解析(画像name)
- パスによるファイル コンテンツの取得
- Wordテンプレートを事前設定
- ファイルの作成(OneDrive保存)
- 共有リンクを作成
- Teamsチャットに投稿
2-2.ステップごとの詳細
トリガー:新しい応答が送信されるとき
ステップ1:応答詳細を取得
アクション:「Microsoft Forms → 応答の詳細を取得」
UI:
- フォームIDからFormsのフォームを選択
- 応答IDには動的コンテンツから「応答ID」を設定
ステップ2:JSON解析(画像name)
Formsで画像を取得するとJSONで画像保管されていたので、必要部分(name)だけ呼び出せるようにJSONの解析を入れてます
UI:
- Content:動的コンテンツから店舗画像1 または式を入れ込む
body('応答の詳細を取得する')?['body/店舗画像1']
- スキーマ:(このままコピペして使ってください)
{
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"link": {
"type": "string"
}
},
"required": [
"name",
"link"
]
}
}
ステップ3:パスによるファイルコンテンツの取得
アクション:「OneDrive for Business → パスによるファイル コンテンツの取得」
UI:
- ファイルパス
/アプリ/Microsoft Forms/出張店舗巡回報告/質問1/first(body('ParseJSON1'))?['name']
Formsアップロード先フォルダは一度テスト送信して確認。
質問名/ファイル名 の構造で保存されるため、パス指定は 質問フォルダまで含める。
画像枚数文JSONの解析とパスによるファイルコンテンツの取得を繰り返し。
ステップ4:Wordテンプレート事前設定
アクション:「Wordテンプレートを事前設定します(Business)」
UI:
- 場所:OneDrive for Businessを選択(Share pointに保存する人もいると思います)
- ドキュメントライブラリ:ドキュメントを選択
- ファイル:テンプレートとして準備したワードファイルを選択
- 詳細パラメーター:WordテンプレートにFormsの回答を対応させます。
テキストは「応答の詳細を取得する」から直接選べますが、画像はFormsから取得した形式のままだとWordに送られてくれないので、ステップ3で出力した「ファイルコンテンツ」を使用します。
ステップ5:ファイル作成(OneDrive保存)
ファイル名:店舗名_出張店舗巡回報告_yyyyMMdd_HHmmss
concat
(coalesce
(replace
(outputs('応答の詳細を取得する')?['body/店舗名'], '_','_'), '未設定'),
'_出張店舗巡回報告_',formatDateTime
(outputs('応答の詳細を取得する')?['body/submitDate'], 'yyyyMMdd_HHmmss'),
'.docx')
同じ日に同じ店について何度も投稿する可能性があるので、ファイル名には時間も入れています。店舗名が空の時は「未設定」が入ります。
ステップ6:共有リンク作成
- ファイル:「ファイルの作成」からIDを選択
- リンクタイプ:Viewを選択
- LinkScope:Organizationを選択(組織内のみで利用するので)
ステップ7:Teamsチャットに投稿
アクション:「チャットまたはチャネルにメッセージを投稿する」
UI
- 接続先:チャネル又はチャットを選択
- チャネルの場合、チームとチャネルを選択
- 投稿されるときのメッセージを作成
3. 注意点・課題
画像サイズ制限
Power AutomateのWordコネクタは4MB上限
Forms側でアップロード時の注意を記載、またはTinyPNG APIによる圧縮検討
画像12枚想定で始めたアンケート項目が2枚になってしまったよ。
空画像対策
今回は画像必須化で対応
条件分岐+代替画像挿入(noimage.png)も今後検討
なぜかどれだけ試してもうまく条件分岐できなかった。
Power Automate Desktop連携
試作段階では安定せず、Word Business Onlineに切替
なお、Power Automateの90日プレミアム試用をしないとWord Business Onlineに繋げなかった。
最初はPower Automate Desktopとの連携でスタートしたけどうまくいかなかった。プレミアムを使わずにやるにはここをうまくいかせたい。
4. 改善アイデア(今後)
画像リサイズ・圧縮の自動化
TinyPNG APIを組み込み、フォーム画像を自動圧縮
Forms以外のデータ入力
Power Appsで入力UI強化&カメラ連携
SharePoint連動
過去巡回報告の検索・分析基盤に発展
5.まとめ
★Forms入力 → Word出力 → Teams投稿の自動化を試作するも、かなり課題だらけでエラーがすごいことになってしまった。
★画像情報は形式が異なる、ファイルサイズが大きいなど、クラウド上で渡すときの設定には多くの課題があることが分かった。
★将来的には画像圧縮や入力フォームをPower Appsにしてみるなど試していくことで、さらに実用化可能かも。
★作成するときは1つずつ確実にテストをしないと、完成したぞ!と思ったものを全部消すというような悲しいことになるので注意しよう。あと細かく保存しよう。
最後にエラーの数がわかるForms画像をお見せして今回はここまで!
追記 チームメンバーに使ってもらってみた
早速Teams上にお知らせを作成し、チームメンバーにもその場で試してもらってみました。
・海外出張時の店舗巡回で、店舗視察報告書を作ることに時間がかかっていないか
・そもそもスマホで撮影した画像をPC送付することや、ワードに貼り付けて画像を成形することが面倒ではないか
といった点から試作品を作ってみました!と紹介して使ってもらいました。
・おお、これは楽になる
・あれ結構面倒なんだよな
・良いね。2枚しか入れられない?
・エラーになっちゃう(画像が4MBを超えたためシステム停止)
・迷わず使えた
上記のような反応をもらい、使い勝手は中々好感触。
後はやはりエラーの問題と制限の問題があるので、そこさえクリアできれば実用に耐えられそう。
また、うれしい誤算として投稿先・説明書の記載先をTeamsにしたので、メンバーがTeamsについても「ここが使いにくい」「これをしたら直りますよ」といった形で使い方について相互に話していました。
使わないと誰が何に困っているかってわからないですよね。
プレミアムが90日間限定なので、今回の試作品は期間限定です。
早めにDesktopと繋げるなどプレミアムでなくても稼働する完全版の制作に邁進します!