
システム間でデータを受け渡しする場合やデータベースにインポートする場合にはXML形式に変換する必要があることがあります。XML(Extensible Markup Language)は階層構造でデータを表現するための汎用的なフォーマットであり、機械可読性が高いためデータ交換や保存に適しています。
本記事ではスプレッドシートをXMLに変換する方法を詳しく解説します。また、変換時の注意点や自動化方法、エラー対策についても触れていきます。
XMLとは
XML(Extensible Markup Language)はデータを構造化して保存・転送するためのマークアップ言語です。HTMLと似ていますが、HTMLが「表示」を目的としているのに対し、XMLは「データの保存と交換」を目的としています。
XMLの特徴
- タグを自由に定義可能
- 階層構造でデータを表現
- 人間にも機械にも読みやすい
- データ交換や保存に広く使用
たとえば、以下のようなデータをXMLで表現できます。
<contacts>
<contact>
<name>山田 太郎</name>
<email>taro@example.com</email>
<phone>090-1234-5678</phone>
</contact>
<contact>
<name>鈴木 花子</name>
<email>hanako@example.com</email>
<phone>080-9876-5432</phone>
</contact>
</contacts>
GoogleスプレッドシートをXMLに変換する方法
Google Apps Scriptを使用
Googleスプレッドシートの場合、Google Apps Scriptを使用してXMLに変換できます。
手順
スプレッドシートを開く
拡張機能 → Apps Script
以下のスクリプトを入力
function exportToXML() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var rows = sheet.getDataRange().getValues();
if (rows.length < 2) {
Logger.log("データが不足しています。");
return;
}
var headers = rows[0]; // 1行目をヘッダーとして使用
var xml = '<?xml version="1.0" encoding="UTF-8"?>\n<root>\n';
for (var i = 1; i < rows.length; i++) {
xml += ' <row>\n';
for (var j = 0; j < rows[i].length; j++) {
var tagName = headers[j] ? headers[j] : 'column' + (j + 1); // ヘッダーが空ならデフォルト名
var value = escapeXml(rows[i][j]);
xml += ` <${tagName}>${value}</${tagName}>\n`;
}
xml += ' </row>\n';
}
xml += '</root>';
var file = DriveApp.createFile('exported_data.xml', xml, MimeType.PLAIN_TEXT);
Logger.log('File created: ' + file.getUrl());
}
// XMLの特殊文字をエスケープする関数
function escapeXml(unsafe) {
if (typeof unsafe !== 'string') return unsafe;
return unsafe
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
}
スクリプトを実行
- 「実行」ボタンを押すとXMLファイルが生成され、Google Driveに保存されます。
自動化の方法
バッチ処理の活用
- Excel VBAやGoogle Apps Scriptをスケジュール実行
- 定期的にデータをXMLにエクスポート
API連携
- 外部システムとAPIを使用してXMLを自動転送
- RESTful APIやSOAPを利用
変換時の注意点
データ形式の整合性
- XMLタグ名にスペースや特殊文字を含めない
- 文字コードはUTF-8を使用
データサイズ
- XMLはテキストベースのため、データサイズが大きくなると処理速度が低下
- 不要なデータは削除する
特殊文字
&
→&
<
→<
>
→>
まとめ
GoogleスプレッドシートではGoogle Apps Scriptを使えば、効率的にデータを変換できます。自動化やAPI連携を取り入れることでさらに効率化が可能です。データの整合性やエラー対策を意識しながら、用途に応じた最適な方法を選択しましょう。
他にもOfficeソフトに関する記事を上げています。是非色々見てみてください。