食品ユニフォーム 不良率 週次集計 v3

導入当日の手順書

設定ブックとスクリプトを置き、既存の Power Automate のフローを v3 に直して、実データで通しで動かすまでの手順です。上から順に進めます。式とスキーマは[コピー]で取れます。各手順の右上の「済」に印を付けると、この端末に残ります。

手元の資料:01 貼り付け用スクリプト(Word)/02 手順書(Excel)/03 完成イメージ/04 設定管理ブック/05 対象顧客リスト

入力そのまま打つ 選ぶ一覧・フォルダーのアイコンから選ぶ ⚡ 動的なコンテンツ稲妻のアイコンから選ぶ fx 式fx を押して式を貼る 貼り付けコピーして貼る

当日

進め方(60分)

今日のゴールは「v3 が御社の環境で通しで動き、出力ブックとアラートメールが届くこと」です。

時間やること中身
0〜5分冒頭録画を開始。今日のゴールと v3 の変更点を確認
5〜15分準備設定ブック・対象顧客リストを置く。スクリプト4本を登録(Copilot でのスクリプトの作り方も見せる)
15〜35分フロー改造既存のフローを #1〜#14 のとおりに直す(新しく足すのは #3・#13・#13-1)
35〜50分通し実行8/10〜8/16 のブックを投入 → 出力・アラート件数・メールを確かめる → もう一度投入して履歴が増えないことを確かめる
50〜60分決めること拠点ごとの宛先、全社宛ての宛先、しきい値、トリガー、対象顧客リストの更新

はじめに録画を開始します(当日参加できない方の視聴用)。

1. 冒頭(5分)

v3 で変わること

9/28 の完成形レビューでいただいたご意見を反映した点です。拠点別サマリーは変更なし、現物確認リストは残しています。

項目v2(9/18)v3
集計する得意先データに出てくる全得意先対象顧客リストの508社だけ(リスト外は3シートにも通知にも出さない)
拠点の決め方仕上データの生産部課名から判定対象顧客リストの「生産拠点」(空欄の得意先だけ生産部課名から)
値が無いセル空欄理由を文字で出す(消耗廃棄なし/洗濯回数0で登録/仕上なし/前週なし/-)
前週比不良率(pt)・不良数(枚)+ 消耗・破損・汚損・その他の前週比(枚)を得意先別明細・現物確認リストに追加
通知全社宛て1通全社宛て+拠点ごと(「通知先」シートに宛先を入れた拠点だけ)

2. 準備(10分)

2-1. ファイルを置く

  1. 1

    SharePoint の不良率フォルダを確かめる

    フォルダ
    入力/不良率/投入 /不良率/出力 /不良率/設定

    9/8 に作ったフォルダをそのまま使います。無ければ作ります

  2. 2

    設定管理ブックを置く

    置くファイル
    入力04【設定管理】不良率_しきい値と通知先_v3.xlsx
    置き場所
    入力/不良率/設定

    全社宛ての通知先(設定シート)には、いただいた配信先15件が入っています。拠点ごとの宛先(通知先シート)は空欄です(5. で決めて入れます)。

  3. 3

    対象顧客リストを置く

    置くファイル
    入力05【対象顧客リスト】食品UF不良率.xlsx
    置き場所
    入力/不良率/設定

    今お使いの週次ブックをこの名前で置いても読めます(「対象顧客」シートが無ければ、いちばん右のシートを読みます)。

2-2. スクリプト4本を登録する

01 の Word にある4本を、Excel の[自動化]に貼り付けて登録します。

スクリプト名登録するときに開くブック
不良率_設定読み出し/不良率/設定/【設定管理】不良率_しきい値と通知先_v3.xlsx
不良率_対象顧客読み出し/不良率/設定/【対象顧客リスト】食品UF不良率.xlsx
不良率_週次集計_v3/不良率/設定/【設定管理】不良率_しきい値と通知先_v3.xlsx(どのブックで登録しても使えます)
不良率_履歴追記/不良率/設定/【設定管理】不良率_しきい値と通知先_v3.xlsx
  1. 1

    Excel on the web でブックを開く

    開くブック
    入力/不良率/設定/【設定管理】不良率_しきい値と通知先_v3.xlsx

    スクリプトは、フローを作った方(フローの所有者)のアカウントで登録します。「スクリプトの実行」アクションの一覧には、接続しているアカウントのスクリプトしか出ないためです。

  2. 2

    [自動化]タブ →[新しいスクリプト]

    操作
    選ぶリボンの[自動化]→[新しいスクリプト]

    右にコードエディターが開きます。

  3. 3

    エディターの中身をすべて消す

    操作
    入力エディターをクリック → Ctrl+A(Mac は ⌘A)→ Delete

    最初から入っている function main(...) も消します。

  4. 4

    01 の Word から1本目のコードを貼る

    貼るもの
    貼り付け01【貼り付け用】Office Script_不良率_v3_20261009.docx の「1. 不良率_設定読み出し」の見出しの下を、最初の行から最後の行まで

    Word の見出しは貼りません。コードの行だけを選んでコピーします。

  5. 5

    スクリプト名を変えて保存

    名前
    入力不良率_設定読み出し
    操作
    選ぶエディター上部のスクリプト名をクリックして書き換え →[スクリプトを保存]

    名前は1文字でも違うと、フローの一覧で見つけにくくなります。

  6. 6

    残りの3本も同じように登録する

    2本目
    入力不良率_対象顧客読み出し
    3本目
    入力不良率_週次集計_v3
    4本目
    入力不良率_履歴追記

    [新しいスクリプト]→ 中身を消す → 貼る → 名前を変えて保存、を3回。v2 のスクリプト(不良率_週次集計)は消さずに残して構いません。

  7. 7

    登録できたか確かめる

    操作
    選ぶ[自動化]→[すべてのスクリプト]

    4本の名前が並んでいれば完了です。

2-3. レクチャー

Copilot でスクリプトを作る・直す

今後、別の定期資料を自動化するときの進め方です。スクリプトは1行ずつ書かず、作りたい処理を日本語で伝えて Copilot に書かせ、エラーもそのまま返して直させます。

  1. 1

    作りたい処理を日本語で箇条書きにする

    例
    貼り付け下のコピーで取れる指示文

    どのシートの、どの列を読み、何を返すか。Power Automate から呼ぶなら「string を返す」と書きます。

  2. 2

    Copilot に指示文を貼り、出てきたコードを[新しいスクリプト]に貼る

    操作
    選ぶMicrosoft 365 Copilot(または Copilot Chat)→ 指示文を貼る → コードをコピー → 新しいスクリプトに貼って保存
  3. 3

    [実行]して、エラーが出たらそのまま Copilot に返す

    例
    貼り付け下のコピーで取れる指示文

    エラーの文と、いまのスクリプト全体を一緒に渡すと、直したコードが返ってきます。1行ずつ自分で書く必要はありません。

  4. 4

    動いたら、Power Automate の「スクリプトの実行」で呼ぶ

    操作
    選ぶフローにアクションを足す → スクリプトを選ぶ → 戻り値(result)を「JSON の解析」で読む

    今日の4本も、この流れで作ったものと同じ形です(返す JSON を、フローの「JSON の解析」で読む)。

3. フロー改造(20分)

既存のフロー「週次_食品UF不良率_集計と通知」を v3 に直す

8/28・9/8 に作ったフローを開き、[編集]で上から順に直します。新しく足すのは #3・#13・#13-1 の3つです。アクションの名前は表記どおりに変えてください(式がこの名前で前のアクションを探します)。

  1. 1

    ファイルが作成されたとき(プロパティのみ)

    SharePoint変更なし
    サイトのアドレス
    選ぶ業務部サイト
    ライブラリ名
    選ぶドキュメント
    フォルダー
    選ぶ/不良率/投入
  2. 2

    スクリプトの実行

    Excel Online (Business)ブックを差し替え

    名前を 設定読み出し に変える(式の中でこの名前を使います)

    場所
    選ぶ業務部サイト(SharePoint)
    ドキュメント ライブラリ
    選ぶドキュメント
    ファイル
    選ぶ/不良率/設定/【設定管理】不良率_しきい値と通知先_v3.xlsx

    欄の右のフォルダーのアイコンから選びます

    スクリプト
    選ぶ不良率_設定読み出し

    一覧から選びます。引数の欄は、スクリプトを選ぶと下に出てきます

    v2 の設定管理ブックから v3 のブックに替えます(通知先シートが増えたため)。引数はありません。

  3. 3

    スクリプトの実行

    Excel Online (Business)★新しく足す

    名前を 対象顧客読み出し に変える(式の中でこの名前を使います)

    場所
    選ぶ業務部サイト(SharePoint)
    ドキュメント ライブラリ
    選ぶドキュメント
    ファイル
    選ぶ/不良率/設定/【対象顧客リスト】食品UF不良率.xlsx

    欄の右のフォルダーのアイコンから選びます

    スクリプト
    選ぶ不良率_対象顧客読み出し

    一覧から選びます。引数の欄は、スクリプトを選ぶと下に出てきます

    #2 の下の[+]から足します。対象顧客リストは読むだけで、書き換えません。

  4. 4

    ファイルのコピー

    SharePoint変更なし

    名前を 出力用コピー に変える(式の中でこの名前を使います)

    コピー元
    ⚡ 動的なコンテンツトリガーの「ファイルパス」
    コピー先フォルダー
    選ぶ/不良率/出力
    既存の場合
    選ぶ置き換える
  5. 5

    スクリプトの実行

    Excel Online (Business)★スクリプトと引数を替える

    名前を 集計 に変える(式の中でこの名前を使います)

    ファイル
    ⚡ 動的なコンテンツ「出力用コピー」の ItemId
    スクリプト
    選ぶ不良率_週次集計_v3

    v2 の 不良率_週次集計 から替えます。選び直すと引数の欄が空に戻るので、下の2つを入れ直します

    settingsJson
    fx 式outputs('設定読み出し')?['body/result']
    targetJson
    fx 式outputs('対象顧客読み出し')?['body/result']

    ★v3 で増えた引数。文字列のまま渡します(JSON の解析はしない)

  6. 6

    JSON の解析

    データ操作★スキーマを貼り替え

    名前を 集計結果 に変える(式の中でこの名前を使います)

    コンテンツ
    fx 式json(outputs('集計')?['body/result'])
    スキーマ
    貼り付けスキーマ(全文)

    今入っている v2 のスキーマを全部消してから貼ります(拠点ごとのメール siteMails などが増えています)

  7. 7

    ファイル コンテンツの取得

    SharePoint変更なし

    名前を 出力ブックの内容 に変える(式の中でこの名前を使います)

    ファイル識別子
    ⚡ 動的なコンテンツ「出力用コピー」の ItemId
  8. 8

    ファイルの作成

    SharePoint変更なし

    名前を 週末日の名前で保存 に変える(式の中でこの名前を使います)

    フォルダーのパス
    選ぶ/不良率/出力
    ファイル名
    入力不良率_〔periodEnd〕.xlsx

    例:不良率_20260816.xlsx

    ファイル コンテンツ
    ⚡ 動的なコンテンツ「出力ブックの内容」のファイル コンテンツ
  9. 9

    ファイルの削除

    SharePoint変更なし

    名前を 一時コピーの削除 に変える(式の中でこの名前を使います)

    ファイル識別子
    ⚡ 動的なコンテンツ「出力用コピー」の ItemId
  10. 10

    スクリプトの実行

    Excel Online (Business)ブックを差し替え

    名前を 履歴追記 に変える(式の中でこの名前を使います)

    場所
    選ぶ業務部サイト(SharePoint)
    ドキュメント ライブラリ
    選ぶドキュメント
    ファイル
    選ぶ/不良率/設定/【設定管理】不良率_しきい値と通知先_v3.xlsx

    欄の右のフォルダーのアイコンから選びます

    スクリプト
    選ぶ不良率_履歴追記

    一覧から選びます。引数の欄は、スクリプトを選ぶと下に出てきます

    resultJson
    fx 式outputs('集計')?['body/result']

    解析したあとの body('集計結果') ではなく、文字列そのものを渡します

  11. 11

    条件

    コントロール変更なし

    名前を アラートあり に変える(式の中でこの名前を使います)

    左の値
    fx 式int(string(body('集計結果')?['alertCount']))
    比べ方
    選ぶ次の値より大きい
    右の値
    入力0
  12. 12

    メールの送信 (V2)

    Office 365 OutlookTrue(はい)の中本文の式を替える

    名前を 全社宛て に変える(式の中でこの名前を使います)

    宛先
    fx 式body('集計結果')?['notifyTo']
    件名
    fx 式body('集計結果')?['mailSubject']
    本文
    fx 式replace(body('集計結果')?['mailBody'], decodeUriComponent('%0A'), '<br>')

    本文の改行がメールで詰まらないよう、<br> に置き換える式にします

  13. 13

    それぞれに適用する

    コントロールTrue(はい)の中、#12 の下★新しく足す

    名前を 拠点ごとに送る に変える(式の中でこの名前を使います)

    前のステップから出力を選択
    fx 式body('集計結果')?['siteMails']

    ⚡ の一覧から選ばず、fx で入れます(⚡ で選ぶとループがもう1つ自動で作られることがあります)

  14. 13-1

    メールの送信 (V2)

    Office 365 Outlook#13 の中★新しく足す

    名前を 拠点宛て に変える(式の中でこの名前を使います)

    宛先
    fx 式items('拠点ごとに送る')?['宛先']
    件名
    fx 式items('拠点ごとに送る')?['件名']
    本文
    fx 式replace(items('拠点ごとに送る')?['本文'], decodeUriComponent('%0A'), '<br>')
    CC
    fx 式items('拠点ごとに送る')?['CC']

    [詳細パラメーター]→[すべて表示]で出ます

    siteMails に入るのは「通知先シートに宛先があり、今週アラートがある拠点」だけです。宛先が空欄の拠点には送りません。

  15. 14

    (何も置かない)

    False(いいえ)変更なし

    アラートが0件の週もメールが欲しい場合は、ここに全社宛てのメールを置きます。

  16. 保存

    右上の[保存]

    操作
    選ぶ[保存]→「フローを開始する準備ができました」と出れば完了

    保存で止まるときは、エラーの出たアクションの欄が空になっていないか(特に #5 の引数)を見ます。

4. 通し実行(15分)

8/10〜8/16 のデータで動かして確かめる

下の数字は、当社の検証環境で同じ4本のスクリプトを実データに対して実行し、別の計算でも突き合わせた結果です(508社すべて一致)。御社の環境での実行は今日が初めてです。

  1. 1

    8/10〜8/16 のブックを投入フォルダに置く

    置くファイル
    入力「仕上データ」「不良交換」の2シートを持つ 8/10〜8/16 のブック
    置き場所
    入力/不良率/投入

    置いてから1〜数分でフローが動きます。フローの詳細画面の[28日間の実行履歴]で確かめます。

  2. 2

    実行がすべて緑になるか

    見るところ
    選ぶ実行を開き、#1〜#13-1 に緑の印が付いているか

    赤い印のアクションがあれば、そこを開いてエラー文を読みます(下の「つまずいたら」)。

  3. 3

    出力ブックができているか

    見るところ
    入力/不良率/出力/不良率_20260816.xlsx
    シート
    入力拠点別サマリー/得意先別明細/現物確認リスト の3つ

    03【完成イメージ】不良率_20260816_v3.xlsx と見比べます。

  4. 4

    数字が完成イメージと同じか

    対象顧客
    入力508社(8拠点)。うち今週データが無い得意先 59社(0枚の行で載る)
    全社
    入力仕上 269,737枚/不良 1,881枚/不良率 0.70%
    アラート
    入力23件(現物確認リストの行数)。拠点ごとの内訳は 03 の拠点別サマリーと同じになること
  5. 5

    空欄のセルが無いか

    見るところ
    選ぶ得意先別明細で、空白のセルが無いこと

    値が無いところは「消耗廃棄なし」「仕上なし」「前週なし」「-」などの文字が入ります。初回は前週の履歴が無いので、前週の8列はすべて「前週なし」です。

  6. 6

    全社宛てのメールが届くか

    届く先
    入力設定シートの「通知先」の15件
    件名の形
    入力【不良率】2026/08/16週 …

    本文が改行されて読めるか(行が詰まっていないか)も見ます。

  7. 7

    拠点宛てのメールが届くか

    届く先
    入力通知先シートに宛先を入れた拠点だけ

    今は通知先シートが空欄なので、拠点宛ては送られません。5. で宛先を入れたあと、もう一度置いて確かめます。

  8. 8

    履歴が追記されたか

    見るところ
    入力設定管理ブックの「履歴」シート
    増える行
    入力516行(拠点8+得意先508)。週末日は 20260816
  9. 9

    同じブックをもう一度置く

    確かめること
    入力履歴が 516行のまま(同じ週の行を消してから入れ直すので二重にならない)。出力ブックは置き換わる

    同じファイル名で置き直すと、トリガーが動かないことがあります。名前を変えて(例:末尾に _2)置きます。

あわせて確かめること(御社の環境で初めて分かること)

確かめること見方・失敗したとき
Excel on the web で、先頭行の固定・オートフィルター・折り返し・列幅の自動調整が効くか得意先別明細を開いて、見出しが固定され、フィルターのボタンが出ているか
設定管理ブックを開いたままフローが動いたとき誰かが開いたままだと「履歴追記」が 423(ロック)で失敗することがある。失敗したらブックを閉じて[再送信]
ブックの大きさ・実行時間Excel のスクリプトは1回120秒・1回の読み書き5MBまで(Microsoft の上限)。失敗したら当社でスクリプトの読み込み単位を小さくします
得意先コードの先頭の0基幹から Excel で出したときに得意先コードが数値になり、先頭の0が落ちていないか。落ちていると対象顧客リストと突き合わなくなります

5. 決めること(10分)

その場で決めて、設定ブックに入れる

どれも設定管理ブック・対象顧客リストを書き換えて保存するだけで、次の集計から反映されます。フローは触りません。

項目今の状態決まったらやること
拠点ごとの宛先いただいた配信先リストには、どの拠点の方かが書かれていないため、通知先シートは空欄です。通知先シートの「宛先」列に、拠点ごとにアドレスを入れて保存(複数は ; 区切り)。拠点名の列は変えない
全社宛ての宛先今は配信先15件すべてを全社宛てに入れています。全員に全拠点のアラートが届きます。拠点の担当の方は拠点宛てだけにする場合、設定シートの「通知先」から外す
しきい値今の基準(5枚以上かつ2.0%以上)では、8/10〜8/16 で23件・最も多い拠点で9件。目安の「1拠点あたり多くても5件」を超えます。設定シートの「最低枚数」「最低不良率」を書き換えて保存(下の表)。フローは触らない
トリガー今は「仕上・不良交換のブックを投入したら動く」。対象顧客リストは毎回読むので、リストの変更は次の投入から反映されます。リストを更新した時点でも集計し直したい場合は、同じ手順のフローをもう1本(トリガー=リストの更新)作る
対象顧客リストの更新リストの最新版がどれか、更新の頻度(今は3か月に1回)。最新版を /不良率/設定 に同じ名前で置き直す
不良交換データの抽出期間8/10〜8/16 のファイルに、8/1〜8/18 の不良交換が入っていました。スクリプトは仕上データの期間に合わせて切るので集計は合いますが、抽出の条件を週に合わせていただくのが本来の形です。基幹の抽出条件を確認

しきい値ごとのアラート件数(8/10〜8/16・対象顧客508社)

「1拠点あたり多くても5件」が目安です。○は、すべての拠点で5件以内に収まる組み合わせです。

最低枚数最低不良率全体の件数最も多い拠点全拠点5件以内備考
5枚以上2.0%以上23件9件×今の基準
5枚以上2.5%以上19件7件×
5枚以上3.0%以上11件4件○
5枚以上4.0%以上5件2件○
10枚以上2.0%以上13件4件○
10枚以上2.5%以上10件3件○
10枚以上3.0%以上6件2件○
15枚以上2.0%以上7件4件○

しきい値を変えたら、同じブックを名前を変えてもう一度置くと、新しい基準での件数とメールを確かめられます。

参考

つまずいたら

症状原因対処
スクリプトの一覧に「不良率_週次集計_v3」などが出てこないExcel の[自動化]に登録していない/別のアカウントで登録した/Power Automate の画面が古いフローの所有者のアカウントで登録し、Power Automate のページを再読み込み
「上から20行に、『得意先コード』と『顧客名』の見出しが見つかりません」対象顧客リストの見出しが違う/いちばん右のシートが別の表「対象顧客」シートを作り、1行目を 生産拠点/得意先コード/顧客名 にする
「targetJson の解析に失敗しました」#5 の targetJson に別のものを渡しているoutputs('対象顧客読み出し')?['body/result'] を渡す
JSON の解析(#6)が失敗するv2 のスキーマのまま/一部だけ貼ったスキーマを全部消して、このページのスキーマを全文で貼り直す
「履歴追記」が「resultJson が空です」で失敗解析後の body('集計結果') を渡しているoutputs('集計')?['body/result'] を渡す
全社宛てのメールが宛先なしで失敗設定シートの「通知先」が空欄通知先にアドレスを入れて保存
拠点宛てのメールが届かない拠点がある通知先シートの宛先が空欄/拠点名がリストの生産拠点と違う/その拠点に今週のアラートが無い拠点名はリストの「生産拠点」と同じ文字にする
メール本文の改行が詰まる本文の式が replace(…) になっていない#12・#13-1 の本文を、このページの式に貼り直す
「シート『仕上データ』が見つかりません」投入したブックのシート名が違う/出力ブックを投入フォルダに戻したシート名は「仕上データ」「不良交換」。出力ブックは投入フォルダに置かない
得意先別明細の行数が508より少ない生産拠点が空欄で、仕上データからも拠点が決まらなかった得意先がある対象顧客リストの「生産拠点」を埋める

ほかの症状は 02【手順書】の「④エラー対応」にまとめています。

参考

会議のあと

御社

拠点ごとの宛先・しきい値が決まっていなければ、決まり次第、設定管理ブックに入れて保存。翌週の投入から、各拠点でメールを受け取れるかを確かめる。

当社

今日決まった内容と、実行で分かったこと(上の「あわせて確かめること」)をまとめてお送りします。失敗した項目があれば修正します。

現場で使い始めるまで

宛先の確定と、各拠点での受け取りの確認で2〜3週間の見込みです。