Office ScriptsでCSV/TSVを扱う方法!UTF-8・Shift-JISの文字コード対応をやさしく解説【Excel自動化・文字化け対策】
生徒
「Office ScriptsでCSVファイルを読み込んだら、日本語が文字化けしました…。UTF-8とかShift-JISって何ですか?」
先生
「CSVやTSVには文字コードというルールがあります。UTF-8やShift-JISの違いを知ることで、Excel自動化でも文字化けを防げますよ。」
生徒
「Office Scriptsでも文字コードを意識しないといけないんですね?」
先生
「その通りです。CSVの読み書きや変換をするときは特に大切です。基本から一緒に見ていきましょう。」
1. Office Scriptsとは?
Office Scriptsは、Microsoftが提供するExcel Online用の自動化機能です。ブラウザ上のExcelで、繰り返し作業をコードで自動化できます。使用する言語はTypeScriptというJavaScriptに似た言語です。
たとえば、セルに値を入れる、CSVデータを整形する、TSV形式に変換するなどの処理をワンクリックで実行できます。Excel自動化、業務効率化、データ処理、CSV変換などの作業にとても役立ちます。
2. CSV・TSVと文字コード(UTF-8・Shift-JIS)とは?
CSVとは、カンマで区切られたテキストデータです。TSVはタブで区切られています。どちらも中身はただの文字の集まりです。
ここで重要なのが「文字コード」です。文字コードとは、コンピューターが文字を数字として保存するためのルールです。
UTF-8は世界共通で使われることが多い文字コードです。Shift-JISは日本語Windowsでよく使われてきた文字コードです。文字コードが合っていないと「文字化け」が起こります。
文字化けとは、本来「こんにちは」と表示されるはずの文字が「ã�“ã‚“ã�«ã�¡ã�¯」のように表示される現象です。これは保存時と読み込み時の文字コードが違うために起こります。
3. Office ScriptsでCSV文字列を作成する(UTF-8想定)
Office Scripts自体はExcel Online上で動くため、基本的にUTF-8で扱われます。そのため、UTF-8のCSVを作るのが安全です。
まずはシンプルにCSV形式の文字列を作る例です。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
sheet.getRange("A1").setValue("名前");
sheet.getRange("B1").setValue("年齢");
sheet.getRange("A2").setValue("田中");
sheet.getRange("B2").setValue(20);
const values = sheet.getRange("A1:B2").getValues();
let csv = "";
for (let row of values) {
csv += row.join(",") + "\n";
}
console.log(csv);
}
実行結果は次のようになります。
名前,年齢
田中,20
この文字列をPower Automateなどと組み合わせて保存すれば、UTF-8のCSVとして出力できます。
4. TSV形式に変換する方法
TSVは区切り文字がタブになります。カンマを「\t」に変えるだけです。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const values = sheet.getRange("A1:B2").getValues();
let tsv = "";
for (let row of values) {
tsv += row.join("\t") + "\n";
}
console.log(tsv);
}
名前 年齢
田中 20
CSV変換やTSV変換は、Excel自動化やデータ連携でよく使われる重要な処理です。
5. Shift-JISのCSVに対応する考え方
Office Scripts単体では文字コードを直接Shift-JISに変換する機能はありません。Excel OnlineはUTF-8前提だからです。
ではどうするのかというと、いったんUTF-8で出力し、Power Automateや別システム側でShift-JISに変換します。
考え方としては「中身は同じ文字列、保存するときに文字コードを変える」というイメージです。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const text = sheet.getRange("A1").getValue() as string;
// UTF-8前提で文字列を取得
console.log("出力文字列: " + text);
}
この出力を外部でShift-JISとして保存すれば、日本語Windows環境でも文字化けしにくいCSVになります。
6. CSVを読み込んでセルに分割する方法
次はCSV文字列を分解してExcelのセルに入れる例です。splitという文字列を区切る機能を使います。
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
const csvText = "商品,価格\nりんご,100";
const rows = csvText.split("\n");
for (let i = 0; i < rows.length; i++) {
const columns = rows[i].split(",");
sheet.getRangeByIndexes(i, 0, 1, columns.length).setValues([columns]);
}
}
このようにしてCSV読み込み処理も可能です。文字コードが正しくUTF-8であれば、日本語も問題なく表示されます。
7. 文字化けを防ぐためのポイント
文字化け対策の基本は次の通りです。
- CSVはできるだけUTF-8で保存する
- Windows向け配布ならShift-JIS変換を検討する
- 保存時と読み込み時の文字コードを統一する
- Excel自動化では出力後の処理も意識する
Office ScriptsでのCSV処理、TSV変換、文字コード対応は、データ連携や業務自動化で非常に重要です。特に日本語データを扱う場合、UTF-8とShift-JISの違いを理解することがトラブル防止につながります。
まとめ
今回はOffice ScriptsでCSVやTSVを扱う方法を通して、UTF-8やShift-JISといった文字コードの基本から、文字化け対策、Excel自動化での活用方法までを幅広く整理しました。CSV形式やTSV形式は一見すると単純なテキストデータですが、実務で扱う場合には文字コードの理解がとても重要になります。特に日本語データを含むCSV出力やCSV読み込みでは、保存時と読み込み時の文字コードが一致していないと文字化けが発生します。
Office ScriptsはExcel Online上で動作するため、基本的にはUTF-8前提でデータを扱います。そのため、Excel自動化やデータ連携を行う際は、まずUTF-8で安全にCSV文字列を生成することが基本方針になります。そのうえで、Windows環境や既存システムとの連携が必要な場合は、Power Automateなどの外部処理でShift-JISへ変換するという流れを意識することが大切です。
また、CSV変換やTSV変換は単に区切り文字を変更するだけのように見えますが、業務効率化やデータ加工の現場では非常に頻繁に使われます。Excelのセル範囲を取得し、joinで区切り文字を指定して文字列を組み立てる処理、逆にsplitで分解してセルに戻す処理は、Office Scriptsによる自動化の基本テクニックです。これらを理解しておくことで、レポート出力、売上データ集計、顧客情報のエクスポートなど、さまざまな場面で応用できます。
文字化け対策としては、UTF-8で統一することを第一に考え、Shift-JISが必要な場合は保存時のエンコード処理を明確に分けることが重要です。日本語CSV、Excel自動化、文字コード変換、Office Scripts活用という観点で基礎を押さえておけば、実務でも安心してデータ処理が行えます。最後に、学習内容を振り返るためのサンプルプログラムを確認してみましょう。
サンプルプログラムの振り返り
function main(workbook: ExcelScript.Workbook) {
const sheet = workbook.getActiveWorksheet();
// データ入力
sheet.getRange("A1").setValue("商品名");
sheet.getRange("B1").setValue("数量");
sheet.getRange("A2").setValue("みかん");
sheet.getRange("B2").setValue(50);
// 範囲取得
const values = sheet.getRange("A1:B2").getValues();
let csv = "";
// CSV形式へ変換(UTF-8前提)
for (let row of values) {
csv += row.join(",") + "\n";
}
console.log(csv);
}
商品名,数量
みかん,50
上記のように、Excelのセルデータを取得し、配列として扱い、joinでカンマ区切りに変換するだけでCSV文字列を生成できます。TSVにしたい場合は区切り文字をタブに変更するだけです。さらに、splitを使えばCSV読み込み処理も実装できます。これらの基本操作を確実に身につけることが、Office ScriptsによるExcel自動化成功の鍵になります。
生徒
「Office ScriptsでCSVやTSVを扱うときは、まずUTF-8で考えるのが基本なんですね。文字コードを意識しないと文字化けする理由もよく分かりました。」
先生
「その通りです。UTF-8とShift-JISの違いを理解しておくことで、日本語CSVのトラブルを防げます。Excel自動化では特に重要な知識です。」
生徒
「joinでCSV変換、splitでCSV読み込みという流れも整理できました。TSV形式も区切り文字を変えるだけなので応用できそうです。」
先生
「はい。Office ScriptsはTypeScriptベースなので、配列操作や文字列処理を理解すると応用範囲が一気に広がります。CSV出力、TSV変換、文字コード対応を組み合わせれば、業務効率化やデータ連携の自動化が実現できます。」
生徒
「これでExcel Onlineでも安心して日本語データを扱えそうです。文字化け対策を意識しながら、自動化に挑戦してみます。」
先生
「ぜひ実践してください。Office ScriptsとCSV処理、UTF-8理解は、これからのExcel自動化スキルとしてとても価値があります。」