このツールとは?
APIやデータベースは通常、データをJSON形式で返しますが、スプレッドシートやExcel、Google スプレッドシート、そしてほとんどのデータ取り込みツールではCSV形式が求められます。このツールはそのギャップを埋めるものです。JSONオブジェクトの配列(APIのレスポンスなど)を貼り付けると、一意のキーごとに1列、オブジェクトごとに1行となるCSVファイルが生成されます。
この変換処理は、単純なアプローチでは問題となる細部を適切に処理します。具体的には、コンマや引用符を含む値は適切にエスケープされ、欠落したフィールドがあっても変換が失敗することなく空のセルとして扱われ、フィールド内にネストされたオブジェクトや配列は、黙って削除されることなく、そのセル内でJSON文字列としてシリアライズされます。
なぜこれを使うのか?
- ヘッダーの自動検出 — 列リストはすべてのオブジェクトにわたるキーの和集合から構築されるため、不整合なレコードがあっても出力に支障をきたすことはありません。
- CSVのエスケープ処理を適切に行う — カンマ、引用符、改行を含む値は適切に引用符で囲まれるため、ExcelやGoogleスプレッドシートでファイルが問題なく開きます。
- ネストされたデータを処理します。フィールド内のオブジェクトや配列は、エラーを発生させることなく、JSONテキストとしてシリアライズされます。
- クリップボードにコピーするか、.csvファイルとして直接ダウンロードしてください。
- 100% クライアントサイド — お客様のデータ(APIの応答、エクスポートされたレコード)は、いかなる場所にもアップロードされることはありません。
使い方
- オブジェクトのJSON配列を貼り付けてください。例:[{"name":"Alice","age":30},{"name":"Bob","age":25}]。
- 「CSVに変換」をクリックしてください。
- 出力内容を確認してください。内容をコピーするか、「CSVをダウンロード」をクリックしてファイルを保存してください。
- ダウンロードしたファイルを、Excel、Google スプレッドシート、またはその他の表計算ソフトで開いてください。
例
入力
[{"name":"Alice","age":30},{"name":"Bob","city":"NYC"}]出力
name,age,city
Alice,30,
Bob,,NYC「city」と「age」は、どちらのオブジェクトにも両方の値が揃っているものはないにもかかわらず、どちらも列として扱われている点に注目してください。欠損値は単に空白のままにされます。
実用的なヒント
- スプレッドシートレポート用のAPIレスポンスを変換する方法:ブラウザの「ネットワーク」タブやAPIテストツールからJSON配列を直接貼り付け、変換してダウンロードするだけです。中間スクリプトは不要です。
- 不整合なレコード(例:フォームのエクスポートに含まれるオプションフィールドなど)を扱う場合:ヘッダーの自動検出機能により、事前に手動でスキーマを照合する必要がありません。
- JSONが、内部に配列がネストされた単一の大きなオブジェクト(例:{"users": [...]})である場合は、ここに貼り付ける前に、配列の部分([...]の部分)のみを抽出してください。
列の順序と網羅性が重要な理由
CSVには、目立たないもののよくあるバグがあります。これは、ヘッダーを手作業で先に記述し、すべての行がそれに一致することを期待してデータをエクスポートする際に発生します。たとえば、1000行のうち50行目に、それ以前の行にはなかった余分なフィールドがあった場合、単純な行単位のCSV書き込み処理では、そのフィールドが何も表示されずに省略されるか、それ以降のすべての列の位置がずれてしまいます。 このツールは、出力行を1行も書き出す前に、まず配列内のすべてのオブジェクトをスキャンして完全かつ正確なヘッダー行を構築することで、この不具合を回避します。そのため、最後のオブジェクトにのみ1回だけ出現するフィールドであっても、そのフィールド専用の列が確保され、他のすべての行のそのフィールドの値は、行の構造を破損させることなく正しく空白として表示されます。
よくある質問
これは、配列ではなく単一のJSONオブジェクトでも動作しますか?
配列が指定されることを想定しています。単一のオブジェクトを角括弧で囲んでください。例えば、{"name":"Alice"} を [{"name":"Alice"}] に変更すると、1行のCSVに変換されます。
フィールド内のネストされたオブジェクトや配列はどうなるのでしょうか?
それらは、エラーが発生したり削除されたりすることなく、そのセル内でJSON文字列としてシリアライズされます(例えば、{"a":1} を含むフィールドは、CSV内では適切に引用符でエスケープされたテキスト「{""a"":1}」となります)。 ネストされたデータを個別の列に展開する必要がある場合は、スキーマに特化した別のツールが必要となります。
私のデータはサーバーにアップロードされますか?
いいえ。この変換処理は、すべてブラウザ内でJavaScriptとして実行されます。どこにもデータが送信されることはありませんので、顧客データや業務データをエクスポートして使用する場合でも安全です。
CSVファイルに空白のセルがあるのはなぜですか?
配列内のオブジェクトの一部に、他のオブジェクトにはあるキーがない場合、その列は存在しますが、そのキーを持たないオブジェクトのセルは空白のままになります。これにより、レコードの不整合によってエラーが発生するのを防ぎ、すべてのデータを保持することができます。
カンマで区切られた値があると、CSVが破損しますか?
いいえ。カンマ、引用符、または改行を含む値は、標準的なCSVの規則に従って自動的に引用符で囲まれ(内部の引用符はエスケープされます)、ExcelやGoogle スプレッドシートで正しく開くことができます。