Office Scriptsは、Microsoft 365内のExcelを自動化するためのスクリプト機能で、VBAに代わるJavaScriptベースのプログラミング言語として開発されています。ここでは、Office Scriptsの基本的な使い方、実際の使用例、および特に多くのユーザーが直面するエラーとその解決策について解説します。
1. Office Scriptsの基本的な使い方
Office Scriptsの構成
Office Scriptsは、main関数とJavaScriptの標準構文を使用して構成されます。main関数のパラメータにはExcelのWorkbookオブジェクトがあり、これを通じてワークブックやシート、セルなどの操作が可能です。
function main(workbook: ExcelScript.Workbook) {
let sheet = workbook.getActiveWorksheet();
sheet.getRange("A1").setValue("Hello, World!");
}
このコードでは、getActiveWorksheetメソッドでアクティブなシートを取得し、A1セルにテキストを書き込んでいます。
2. Office Scriptsの使用例
(1) 複数シートへのデータ書き込みと日付管理
日付に基づいて各シートにデータを記入する場合、スクリプトを活用することで簡易的なデータ整理が可能です。例えば、次のコードは日付に応じたシートを探し、特定のセルにデータを記入します。
function main(workbook: ExcelScript.Workbook, date: string, data: string) {
let [year, month] = date.split("-");
let sheetName = `${month}月`;
let sheet = workbook.getWorksheet(sheetName);
if (sheet) {
sheet.getRange("A1").setValue(data);
} else {
console.log("指定のシートが見つかりません。");
}
}
(2) 条件付き書式の自動適用
特定のセルの内容に応じて条件付き書式を適用することもOffice Scriptsで可能です。例えば、数値がある範囲を超えた場合に自動的にセルの色を変更するスクリプトは以下の通りです。
function main(workbook: ExcelScript.Workbook) {
let sheet = workbook.getActiveWorksheet();
let range = sheet.getRange("B2:B10");
range.getFormat().setFillColor("yellow");
range.getConditionalFormat().setGreaterThan(50);
}
3. Office Scriptsでのエラーとその対策
1. Cannot read properties of undefined エラー
このエラーは、指定したシートやセルが存在しないときに頻発します。例えば、以下のようなコードでシートが見つからない場合です。
let sheet = workbook.getWorksheet("記入履歴");
if (!sheet) {
console.log("指定のシートが見つかりません。");
return;
}
対策:
対象のシートやセルが存在するかどうか確認するコードを追加することで回避できます。特に新しいワークブックやテンプレートを利用する場合にはシート名やセル範囲が事前に一致しているかを確認します。
2. addComment is not a function
コメント機能はOffice ScriptsのAPIにおいて制限があり、通常のaddCommentメソッドはサポートされていません。
対策:
代替として、必要に応じて別の方法で情報を表示したり、他のシステムを利用する方法を検討することが有効です。例えば、セルに直接テキストを設定したり、別シートにメモを記録することが考えられます。
3. InvalidTemplate エラー(Power Automate連携時)
Power Automateを使用してTeamsやFormsからのデータを取得してExcelに書き込む際、このエラーが発生することがあります。特に、スクリプトが正しい変数名や関数を指定していない場合に生じます。
対策
Power Automateでのフロー設計時に、アクションの変数名やパラメータが正しいか確認します。必要に応じて「動的コンテンツ」で必要なデータを正しく選択し、適切なエラー処理を設定します。
4. 日付とタイムゾーンの問題
FormsやTeamsから受け取る日付データが異なるタイムゾーンで保存されるため、Excel内で日付や時間がずれる問題がありました。特に、UTC時間を日本時間に変換する必要がある場合に、スクリプト側で処理が必要です。
対策:
JavaScriptのDateオブジェクトを利用して、UTCからの変換処理を追加します。また、Power Automate側で直接変換して渡す方法もあります。
let dateObj = new Date(submissionTime);
dateObj.setHours(dateObj.getHours() + 9); // 日本時間に変換
let japanDate = dateObj.toISOString().slice(0, 10);
5. split 関数に関連するエラー
split関数は、データが存在しない場合や想定と異なる形式である場合にエラーを引き起こします。特に、フォームやチャットデータから受け取ったデータのフォーマットが異なる場合に問題が発生します。
対策:
エラーが発生する前にデータの存在を確認し、想定した形式であることを条件分岐で確かめることで、未定義エラーを防ぎます。
6. 状態変換でのエラー
複数のステータスを数値に変換する際、スクリプトのswitch文が正しく機能しない場合がありました。
対策:
各ステータスの値がスクリプト内で正確に定義されていることを確認します。また、変換のロジックをテストし、変換ミスがないかチェックすることで防止できます。
4. まとめ
Office Scriptsは、Excel Onlineでの自動化を強化するツールであり、特に日常業務の効率化において非常に役立ちます。基本的な構文の理解とエラー対策を行うことで、柔軟にExcelデータの操作や管理が可能です。
参考になれば、幸いです。
IT・ガジェット・電子工作の知識をこれひとつで

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。
PCアプリの操作解説、最新のガジェット情報、そして電子工作の専門書まで。 Kindle Unlimitedなら、あらゆるジャンルのIT・デジタル関連書籍が読み放題です。
「仕事の効率化」から「趣味の深掘り」まで、高価な専門書をわざわざ買わずに、必要な情報をその場で引き出せるのが最大のメリット。 現在は30日間の無料体験や、対象者限定の「3ヶ月499円」プランなどが用意されています。まずはご自身のアカウントでお得なオファーが表示されるかご確認ください。
