Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
生徒
「Office ScriptsでExcelの操作を自動化したいんですが、どんなコードを書けばいいんですか?」
先生
「Office ScriptsはTypeScriptという言語を使ってExcelのセルやシートを操作できますよ。簡単なコードで Excel を動かせます。」
生徒
「どんなふうにExcelを自動化するんですか?」
先生
「今日は特に、Office ScriptsとPower Automateを組み合わせて使う“自動化戦略”について、やさしく説明していきますね。」
1. Office ScriptsとPower Automateを組み合わせる意味
Office ScriptsはExcel Onlineの自動化力を高める便利な仕組みですが、Power Automateと組み合わせることで、さらに広い範囲の業務自動化が可能になります。Power Automateとは、Microsoft が提供している業務フロー自動化ツールで、クリック操作だけで「トリガー(きっかけ)→処理(アクション)」を作ることができます。例えば「メールが届いたらExcelに記録する」「OneDriveのファイルが更新されたらスクリプトを実行する」といった連携ができます。
Office Scripts単体ではExcel内部の操作が中心ですが、Power Automateを使うことで、Excel以外のアプリとも連動した幅広い自動化が可能になり、日々の業務を大きく効率化できます。
2. Power Automateと連携すると何ができるのか?
Power AutomateとOffice Scriptsを組み合わせることで、Excel操作の自動化が「外部のイベント」とつながります。パソコン初心者でもイメージしやすいように、身近な例で考えてみましょう。
例えば「ポストに手紙が届いたら自動で仕分けしてくれるロボット」がいたら便利ですよね。同じように、Power Automateは「メールが届いた」「フォームに回答があった」「特定の時刻になった」などをきっかけに、Excelを自動で更新する処理を実行できます。これにより、自分が毎回手で入力していた作業が消え、作業時間を大きく短縮できます。
3. Power AutomateでOffice Scriptsを呼び出す仕組み
Power Automateでは「アクション」という処理を組み合わせてフロー(自動処理)を作ります。その中に「Office Scriptsを実行する」アクションがあります。このアクションに Office Scripts のスクリプトIDを指定すれば、Power Automateの流れの中でExcelを操作できます。
処理の流れは次のようになります。
① Power Automateでトリガー(例:メール受信)を設定する
② Office Scriptsの実行アクションを追加する
③ スクリプトに渡したい値を入力する(例:メールの内容)
④ Excel Onlineがスクリプトを実行して結果を更新する
これにより、「外部で発生した出来事」をExcelに自動反映させたり、Excelの処理結果をさらに別のアプリへ送ることも可能になります。
4. Office Scriptsで作るコード例(Power Automate向け)
ここでは、Power Automateで利用しやすいOffice Scriptsの基本コードを紹介します。例えば「指定したセルに値を書き込む」動作は、Power Automateとの連携で最も使われる処理のひとつです。
function main(workbook: ExcelScript.Workbook, value: string) {
const sheet = workbook.getActiveWorksheet();
sheet.getRange("A1").setValue(value);
}
このスクリプトは、Power Automateから受け取った文字(value)を、A1セルに書き込むシンプルなものです。フローで「メールの件名」や「フォームの回答内容」などを渡せば、そのままExcelに自動記録できます。
5. Power AutomateとOffice Scriptsの組み合わせで効果が出る業務例
実務では、次のような場面で連携の効果が大きく発揮されます。
・毎朝決まった時刻にスクリプトを実行してExcelの集計を更新する
・問い合わせフォームの回答をリアルタイムでExcelに自動追加する
・Teamsで受け取ったメッセージを自動で表に追記する
・SharePointのファイル更新をきっかけにスクリプトでデータ整形を行う
これらは人が何度も繰り返す作業ですが、Power AutomateとOffice Scriptsを組み合わせれば「人が触らない Excel」が実現し、ミスを減らしながら時間を大きく節約できます。
6. どのようなスクリプトをPower Automate向けに用意するとよいか
Power Automateと連携する場合は、スクリプトを「外部から値を受け取りやすい形」にするのがポイントです。初心者向けに言うと「入力口を作ってあげるイメージ」です。
Office Scriptsでは、関数の引数(ひきすう)として値を受け取ることができます。引数とは「スクリプトに渡すための箱」と考えるとわかりやすいでしょう。この箱にPower Automateから値を入れてあげると、Excelに書き込んだり、計算したり、条件で使ったりできます。
また、処理の途中で計算した結果をPower Automate側に返すこともできます。これにより「Excelで集計 → その結果をメールで送信」といった作業も完全自動化できます。
7. Power AutomateとOffice Scriptsを組み合わせるときの注意点
便利である一方、注意点もあります。特に初心者の方は次のポイントを意識すると失敗が減ります。
・Excel Onlineで実行されるため、ファイルはOneDriveまたはSharePointに保存する必要がある
・スクリプトの実行には少し時間がかかることがあるため、フロー全体の待ち時間も考慮する
・Excelファイルがロックされているとスクリプトが実行できない場合がある
これらはPower Automate全体の動作に共通する部分も多く、慣れてくると自然に理解できるようになります。最初は簡単なフローから試し、徐々に複雑な業務へ広げていくとよいでしょう。
8. 効率的な自動化戦略の考え方
業務自動化は「スクリプトを作れば終わり」ではありません。目的はあくまで作業の時間を減らし、ミスを減らし、効率を上げることです。そのため、次のような考え方が重要になります。
・毎日・毎週・毎月で繰り返している業務をリスト化する
・手作業が多い部分を優先的に自動化する
・Excel内で完結する作業はOffice Scriptsで、外部と連動させたい作業はPower Automateを使う
・スクリプトはなるべくシンプルにして、複雑な処理はPower Automate側に任せる
特に初心者は、最初から高度な仕組みを作らず、「小さな作業を一つずつ自動化する」ことが成功への近道です。
9. 実行結果のイメージ例
Power Automateを通じてOffice Scriptsを実行すると、Excelのセルが自動で更新されます。例えば先ほどのコードを実行すると、A1セルに指定の文字が書き込まれます。
A1セル → 「Power Automateからの入力値」
このようにExcelが自動で動くことで、業務のスピードが大幅に向上します。
まとめ
Power AutomateとOffice Scriptsを組み合わせることで、Excel自動化がこれまで以上に幅広く柔軟な仕組みに進化することがよく分かりました。特に、クラウド上で動作するExcel Onlineと連携することで、場所や端末に依存しない安定したデータ処理が可能になり、働き方が多様化する現代にとても相性の良い自動化方法といえます。Office ScriptsはExcel内部を正確に制御する強みを持ち、一方でPower Automateは外部アプリとの接続やトリガー設定に優れています。この二つを組み合わせることにより、単なるExcel作業の短縮にとどまらず、企業全体の業務フローを見直すきっかけにもなります。 また、引数を利用することでPower Automateから値を渡せる仕組みや、Excelから集計した結果を別アプリに返す処理など、実務に直結する高度な活用も可能です。長期的に見ても、これらの仕組みは業務の標準化、ミス削減、作業効率化に大きな力を発揮し、組織全体のパフォーマンスを高めます。Excel自動化を既に使っている人にとっても、Power Automateとの連携を知ることで新たな可能性が広がり、より戦略的な自動化が見えてくるでしょう。
Power Automate連携用Office Scriptsサンプル
以下は、Power Automateから値を受け取りExcelへ書き込む基本構造を応用したサンプルコードです。実務でも特に使用頻度が高く、さまざまな用途への応用が簡単です。
function main(workbook: ExcelScript.Workbook, record: { date: string, message: string }) {
const sheet = workbook.getWorksheet("ログ");
// 空いている行を探す
const lastRow = sheet.getUsedRange()?.getLastRow() ?? 0;
const next = lastRow + 1;
// Power Automateから渡された情報を記録
sheet.getRange(`A${next}`).setValue(record.date);
sheet.getRange(`B${next}`).setValue(record.message);
// 処理ログを別シートにまとめる
const summary = workbook.getWorksheet("サマリー") ?? workbook.addWorksheet("サマリー");
summary.getRange("A1").setValue("最新実行日時");
summary.getRange("B1").setValue(record.date);
}
このように、Power Automateから複数の値(たとえば「日付」「メッセージ」など)を受け取り、Excel へ正確に記録することで、日報作成・問い合わせ履歴の管理・自動ログ化など多くの業務に応用できます。クラウド上で動作するためパソコン環境に依存せず、遠隔地からでもスクリプトが同じ動作を再現できる点は特に大きなメリットです。 業務に合わせて柔軟にスクリプトをカスタマイズし、Power Automate側で「いつ」「何をきっかけに」実行するかを設定することで、本格的なワークフロー自動化が実現します。小さな作業から始めても、積み重ねることで大きな成果につながるのがこの組み合わせの魅力です。
生徒
「Power AutomateとOffice Scriptsを組み合わせると、Excelがこんなに自動で動くなんて、本当に驚きました!」
先生
「そうでしょう。特にクラウド環境での自動処理は、これからの働き方に欠かせない仕組みになっていきますよ。」
生徒
「Power Automateから値を渡してExcelで処理して、それをまた別のサービスに送ることもできるんですね!」
先生
「ええ、まさにそこが最大の強みです。Excel単体ではできないことも、Power Automateが橋渡ししてくれます。」
生徒
「まずは簡単なフローを作るところから始めて、少しずつ自動化の範囲を広げてみます!」
先生
「その意識がとても大切です。小さく始めれば、必ず大きな成果につながりますよ。」