🏠 PA45トップ 第22回 資料 ハンズオン手順
PA45 第22回|ハンズオン手順

Officeスクリプト × Power Automate で自動集計経費(ExpenseTable)の合計を、スクリプトで集計してTeamsに通知するまで。順番どおりに進めればできます。

今日つくるもの: Excelの経費(Amount)を自動で合計集計し、その結果を Teams に通知するフロー。
🖱️ ボタンで開始 ⚙️ スクリプトで集計 📣 Teamsに通知
まず最初に:サンプルExcelをダウンロード pa45-vol22-survey.xlsx(経費表 ExpenseTable)/クリックすると Excel がそのまま開けます(zipではありません)
STEP 0

準備(サンプルExcel+Copilotを開く)

サンプルの経費表(ExpenseTable)を OneDrive に置き、ブラウザのExcelと M365 Copilot チャットを開きます。

⬇ サンプルExcel(経費表 ExpenseTable)をダウンロード
  1. ダウンロードした pa45-vol22-survey.xlsx を、OneDrive(職場・学校)にアップロードします。
    • 迷ったら OneDrive の PA45 という新しいフォルダに入れておくと、あとで探しやすいです。
  2. OneDrive でそのファイルをクリックして開く(ブラウザのExcelで開きます)。表の名前は「ExpenseTable」、列は NameAmountDate です。
  3. 別のタブで M365 Copilot チャットを開いておきます(職場・学校アカウントでサインインした Copilot。例:copilot.microsoft.com、または Teams・Office 画面の Copilot ボタン)。
⚠️ 「自動化」タブが出ないときは:
  • 会社・学校アカウント(法人・教育の Microsoft 365)でサインインしているか確認(個人向け Personal・Family は非対応)。正しいアカウントでサインインし直すと出ます。
  • ファイルは OneDrive for Business / SharePoint に置いたものを開く(ローカルや個人 OneDrive はNG)。
  • それでも出なければ、管理者が Officeスクリプト をオフにしている可能性(M365 管理センターで確認・反映に時間がかかることあり)。
※「自動化」タブは条件がそろえば自動で表示されます。リボンから“追加”する設定ではありません(=出ない時はアカウント/ライセンス/管理者設定のどれかが原因)。
STEP A

Copilot にスクリプトを書いてもらう

コードは書きません。やってほしいことを日本語で伝えるだけ。Copilot が Officeスクリプトを書いてくれます。

  1. M365 Copilot チャットの入力欄に、下の 「お願い文」をコピーして貼り付けます。
  2. 続けて、Excelの表(見出し+データ)をコピーして貼り付けます(Name・Amount・Date)。
    • 表をドラッグして選択 → Ctrl+C → Copilotの入力欄で Ctrl+V
  3. 送信すると、Copilot が Officeスクリプト(コード)を書いてくれます。そのコードをコピーします(次の STEP B で使います)。
🟣 Copilotへのお願い文(コピーして貼る)
次のExcelの表について、Officeスクリプト(ExcelScript / TypeScript)を書いてください。
・表の名前は「ExpenseTable」(列:Name・Amount・Date)
・「Amount」列の合計を計算する
・合計を、表の2つ下のセルに「経費 合計」というラベルと並べて書き出し、そのセルを黄色に着色する
・見出し行を緑色+白文字(太字)にする
・計算した合計を、関数の戻り値(return)として返す ← Power Automateで使うため
main関数の戻り値の型は number にしてください。
💡 一番大事なのは最後の一行:「合計を戻り値(return)で返す」。これが無いと、あとで フローが合計を受け取れません。だからお願い文に必ず入れておきます(初心者がつまずく所を、文章で先回り)。
⚠️ AIのコードは、たまに一発で動かないことがあります。 エラーが出たら、次の STEP B の 「完成版(お守り)」を貼ればOK。今日は「書けなくても、頼めば作れる」体験が目的です。
STEP B

Excel に貼って、保存して実行

Copilot が書いたコードを、Excelの「自動化」タブに貼って動かします。

  1. Excel(Web)→ 自動化 タブ →「新しいスクリプト」を選びます(コードエディターが開きます)。
  2. 最初から入っているコードをすべて消して、STEP A で Copilot が書いたコードを貼り付けます。
  3. スクリプト名を 「経費の集計」 に変更し、「スクリプトの保存」を押します。
  4. 「実行」を押して、Excelで見出しに色がつき、表の下に合計が書き出されるか確認します。
Excelの自動化タブと新しいスクリプト(実画面)
実画面:「自動化」タブ →「新しいスクリプト」。表は ExpenseTable(Name・Amount・Date)。
🛟 完成版(お守り): Copilot の結果がうまく動かないときは、下のコードをそのまま貼れば必ず動きますgetValuesで合計を計算し、戻り値でも返します)。当日は全員これを配ります。
経費の集計(完成版・お守り)
function main(workbook: ExcelScript.Workbook): number {
  // 表「ExpenseTable」を取得(無ければ最初の表)
  let table = workbook.getTable("ExpenseTable");
  if (!table) { table = workbook.getTables()[0]; }

  // ① 見出し行に色をつける(緑+白字・太字)
  const header = table.getHeaderRowRange();
  header.getFormat().getFill().setColor("#217346");
  const headerFont = header.getFormat().getFont();
  headerFont.setColor("#FFFFFF");
  headerFont.setBold(true);

  // ②「Amount」列の合計を計算
  const headerValues = header.getValues()[0].map(v => String(v));
  const amountIndex = headerValues.indexOf("Amount");
  const bodyValues = table.getRangeBetweenHeaderAndTotal().getValues();
  let sum = 0;
  for (const row of bodyValues) {
    const n = Number(row[amountIndex]);
    if (!isNaN(n)) { sum += n; }
  }
  const total = sum;

  // ③ 表の2つ下に「経費 合計」+数値を書き出す
  const below = table.getRange().getLastRow().getOffsetRange(2, 0);
  below.getCell(0, 0).setValue("経費 合計");
  const totalCell = below.getCell(0, 1);
  totalCell.setValue(total);
  totalCell.getFormat().getFont().setBold(true);
  totalCell.getFormat().getFill().setColor("#FFF7ED");

  // ④ 合計を返す(フローのTeams通知で使う)
  return total;
}
⬇ 完成版スクリプトをファイルでダウンロード
このスクリプトがやること: 見出しに色をつけ → Amount の合計を計算 → 表の下に書き出し → 合計を “返す”。最後の「返す」があるので、次のフローで結果を受け取って Teams に流せます。
スクリプトが正常に実行された(実画面)
実画面:「実行」して スクリプトが正常に実行されました と出ればOK。表の下に合計が入ります。
STEP C

Power Automate で自動化する

make.powerautomate.com を開いて、手動で動くフローを1本作ります。保存したスクリプトを呼び出し、結果を Teams に通知します。

  1. 左メニューの 「作成」「インスタント クラウド フロー」を選びます。
  2. フロー名を 「Vol22 経費を集計して通知」 などに。トリガーは 「フローを手動でトリガーします」を選び、「作成」
    • 手動トリガー=ボタンを押すと動くフロー。今日はこれで十分です。
  3. +(新しいステップ)アクションを追加。検索ボックスに スクリプトの実行 と入れ、Excel Online (Business)「スクリプトの実行」を選びます。
    • サインインを求められたら、会社・学校のアカウントでサインイン。
  4. 「スクリプトの実行」に、次を指定します。
    • 場所(Location):OneDrive for Business
    • ドキュメント ライブラリ:OneDrive
    • ファイル:フォルダの絵から pa45-vol22-survey.xlsx を選ぶ
    • スクリプト経費の集計 を選ぶ
  5. アクションを追加Teams メッセージを投稿 で検索し、Microsoft Teams「チャットまたはチャネルでメッセージを投稿する」を選びます。
  6. Teams の投稿先を指定します。
    • 投稿者:Flow bot
    • 投稿先:Chat with Flow bot(自分あて)※チャネルでもOK
    • Recipient(宛先):自分(デモなら講師のアカウント)
    • メッセージ:下の例のように書き、合計の部分は動的コンテンツの result(=スクリプトの実行の戻り値)を挿入
スクリプトの実行の設定(実画面)
実画面:「スクリプトの実行」で ファイルスクリプト(経費の集計) を選ぶ。
Teams メッセージ本文(例)
📊 経費の集計が終わりました。
経費の合計は 【ここに result を挿入】 円 です。
(このメッセージは Power Automate が自動送信しています)
💡 合計の入れ方: 本文の入力欄で「動的コンテンツ」を開き、スクリプトの実行 → result を選びます。式で書くなら body('スクリプトの実行')?['result'] です。
Teamsメッセージの設定(実画面)
実画面:投稿者=Flow bot/本文の合計に result を差し込む。
  1. 右上の 「保存」を押します。

仕上げ:テストして動かす

  1. 右上の 「テスト」「手動」「テスト」「実行」
  2. 数秒待つと、各ステップに緑のチェック ✓ が付けば成功です。
  3. Teams を開いて、Flow bot からの通知(経費の合計)が届いているか確認します。
  4. Excel も見ると、見出しに色がつき、表の下に「経費 合計」が書き出されています。
フローが正常に実行された(実画面)
実画面:テスト成功。3つのステップすべてに 緑チェック ✓ が付けばOK。
うまくいかないとき:
  • 「スクリプトが見つからない」→ スクリプトの保存先が OneDrive になっているか確認。
  • ファイルが選べない → サンプルExcelが OneDrive(職場・学校)に置いてあるか確認。
  • 合計が入らない → Teams本文の合計部分に、動的コンテンツ result を入れたか確認。
知っておく上限: 1日 約1,600回まで/1回 120秒以内/ファイル 25MBまで/スクリプトから外部サイトの呼び出しは不可。ふつうの集計なら当たりません。(出典:Microsoft Learn)
← 第22回の資料にもどる 🏠 サイトのトップへ