> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jinba.io/llms.txt
> Use this file to discover all available pages before exploring further.

# データ変換ツール

> 異なるフォーマットと構造間でのデータ変換

## 概要

データ変換ツールは、異なるフォーマット間でデータを変換するための重要な機能を提供します。これらのツールは、配列からCSVへの変換、画像からPDFへの変換、HTMLからPDF/DOCXへの変換など、ワークフローでのさまざまなデータ変換ニーズを処理します。

## 主な機能

### CONVERTER\_ARRAY\_TO\_CSV

* 2D配列を自動エスケープ付きでCSV形式に変換
* 特殊文字（引用符、カンマ、改行）を処理
* 入力: `input`（2D配列）— 出力: `result`（CSV文字列）
* スプレッドシートアプリケーションと互換性

### CONVERTER\_IMAGE\_TO\_PDF

* 画像をPDF形式に変換
* TIFF、PNG、JPEG、GIFなどをサポート
* 入力: `file_link`（画像URLの配列、最大10ファイル）
* 出力: `result`（生成されたPDFのURL）

### CONVERTER\_HTML\_TO\_PDF

* HTMLコンテンツをPDFファイルに変換
* 入力: `html_content`（HTML文字列）、`filename`（任意、拡張子なし）
* 出力: `result`（生成されたPDFファイルの署名付きURL）

### CONVERTER\_HTML\_TO\_DOCX

* HTMLコンテンツをDOCX（Word）ファイルに変換
* 入力: `html_content`（HTML文字列）、`filename`（任意、拡張子なし）
* 出力: `result`（生成されたDOCXファイルの署名付きURL）

## 認証

変換ツールに認証は必要ありません。

## 例: データのCSVエクスポート

```yaml theme={null}
- id: fetch_data
  name: fetch_data
  tool: PYTHON_SANDBOX_RUN
  input:
    - name: code
      value: |
        # サンプルデータ処理
        import json
        
        # APIやデータベースからのデータ取得をシミュレート
        raw_data = [
            {"name": "田中太郎", "email": "tanaka@example.com", "age": 30, "city": "東京"},
            {"name": "佐藤花子", "email": "sato@example.com", "age": 25, "city": "大阪"},
            {"name": "鈴木一郎", "email": "suzuki@example.com", "age": 35, "city": "名古屋"}
        ]
        
        # 2D配列形式に変換
        headers = ["名前", "メール", "年齢", "都市"]
        data_rows = []
        data_rows.append(headers)
        
        for item in raw_data:
            row = [item["name"], item["email"], str(item["age"]), item["city"]]
            data_rows.append(row)
        
        print(json.dumps(data_rows, ensure_ascii=False))

- id: convert_to_csv
  name: convert_to_csv
  tool: CONVERTER_ARRAY_TO_CSV
  input:
    - name: input
      value: "{{steps.fetch_data.result.stdout | fromJson}}"

- id: save_csv_file
  name: save_csv_file
  tool: OUTPUT_FILE
  input:
    - name: content
      value: "{{steps.convert_to_csv.result}}"
    - name: filename
      value: "user_data_export.csv"
    - name: fileType
      value: "csv"
```

## 例: 売上レポート生成

```yaml theme={null}
- id: calculate_sales_metrics
  name: calculate_sales_metrics
  tool: PYTHON_SANDBOX_RUN
  input:
    - name: code
      value: |
        import json
        from datetime import datetime, timedelta
        
        # サンプル売上データ
        sales_data = [
            {"product": "商品A", "sales": 1500, "region": "北部", "month": "1月"},
            {"product": "商品B", "sales": 2300, "region": "南部", "month": "1月"},
            {"product": "商品A", "sales": 1800, "region": "北部", "month": "2月"},
            {"product": "商品B", "sales": 2100, "region": "南部", "month": "2月"}
        ]
        
        # サマリーテーブルを作成
        summary = [["商品", "地域", "月", "売上", "成長率"]]
        
        for i, item in enumerate(sales_data):
            growth = "N/A"
            if i >= 2:  # 2月データの成長率を計算
                prev_sales = sales_data[i-2]["sales"]
                growth = f"{((item['sales'] - prev_sales) / prev_sales * 100):.1f}%"
            
            summary.append([
                item["product"],
                item["region"], 
                item["month"],
                f"¥{item['sales']:,}",
                growth
            ])
        
        print(json.dumps(summary, ensure_ascii=False))

- id: export_sales_csv
  name: export_sales_csv
  tool: CONVERTER_ARRAY_TO_CSV
  input:
    - name: input
      value: "{{steps.calculate_sales_metrics.result.stdout | fromJson}}"

- id: create_downloadable_report
  name: create_downloadable_report
  tool: OUTPUT_FILE
  input:
    - name: content
      value: "{{steps.export_sales_csv.result}}"
    - name: filename
      value: "sales_report_{{date | format('YYYY-MM-DD')}}.csv"
    - name: fileType
      value: "csv"
```

## 例: 画像からPDFへの変換

```yaml theme={null}
- id: input_images
  name: input_images
  tool: INPUT_IMAGE_FILE
  input:
    - name: file_url
      value: "https://example.com/chart1.png"
    - name: description
      value: "売上チャート画像"

- id: convert_chart_to_pdf
  name: convert_chart_to_pdf
  tool: CONVERTER_IMAGE_TO_PDF
  input:
    - name: file_link
      value:
        - "https://example.com/chart1.png"

- id: convert_multiple_charts
  name: convert_multiple_charts
  tool: CONVERTER_IMAGE_TO_PDF
  input:
    - name: file_link
      value:
        - "https://example.com/chart1.png"
        - "https://example.com/chart2.png"
        - "https://example.com/chart3.png"
```

## 例: HTMLからPDF / DOCXへの変換

```yaml theme={null}
- id: generate_html_report
  name: generate_html_report
  tool: OPENAI_INVOKE
  config:
    - name: version
      value: gpt-4
  input:
    - name: prompt
      value: |
        今月の売上結果をまとめたHTMLレポートを生成してください。
        HTMLコンテンツのみを返してください。

- id: convert_report_to_pdf
  name: convert_report_to_pdf
  tool: CONVERTER_HTML_TO_PDF
  input:
    - name: html_content
      value: "{{steps.generate_html_report.result}}"
    - name: filename
      value: "monthly_sales_report"

- id: convert_report_to_docx
  name: convert_report_to_docx
  tool: CONVERTER_HTML_TO_DOCX
  input:
    - name: html_content
      value: "{{steps.generate_html_report.result}}"
    - name: filename
      value: "monthly_sales_report"

# steps.convert_report_to_pdf.result は生成されたPDFファイルの署名付きURL
# steps.convert_report_to_docx.result は生成されたDOCXファイルの署名付きURL
```

## 例: 複雑なデータ変換

```yaml theme={null}
- id: extract_complex_data
  name: extract_complex_data
  tool: EXCEL_GET_ROWS
  input:
    - name: file_url
      value: "{{steps.input_excel.result.file_url}}"
    - name: range
      value: "A1:F1000"

- id: transform_and_clean_data
  name: transform_and_clean_data
  tool: PYTHON_SANDBOX_RUN
  input:
    - name: code
      value: |
        import json
        import re
        
        # Excelデータを解析
        excel_data = {{steps.extract_complex_data.result.content}}
        
        # データをクリーンアップし変換
        cleaned_data = []
        headers = ["ID", "名前", "メール", "電話", "ステータス", "備考"]
        cleaned_data.append(headers)
        
        for row in excel_data[1:]:  # ヘッダー行をスキップ
            if len(row) >= 6:
                # メールをクリーンアップ
                email = row[2].strip().lower() if row[2] else ""
                
                # 電話番号をフォーマット
                phone = re.sub(r'[^\d+]', '', row[3]) if row[3] else ""
                
                # 備考をクリーンアップしエスケープ（カンマ、引用符を含む可能性）
                notes = str(row[5]).replace('"', '""') if row[5] else ""
                
                cleaned_row = [
                    str(row[0]) if row[0] else "",
                    str(row[1]).title() if row[1] else "",
                    email,
                    phone,
                    str(row[4]).upper() if row[4] else "保留中",
                    notes
                ]
                cleaned_data.append(cleaned_row)
        
        print(json.dumps(cleaned_data, ensure_ascii=False))

- id: convert_cleaned_data
  name: convert_cleaned_data
  tool: CONVERTER_ARRAY_TO_CSV
  input:
    - name: input
      value: "{{steps.transform_and_clean_data.result.stdout | fromJson}}"

- id: save_cleaned_export
  name: save_cleaned_export
  tool: OUTPUT_FILE
  input:
    - name: content
      value: "{{steps.convert_cleaned_data.result}}"
    - name: filename
      value: "cleaned_data_export.csv"
    - name: fileType
      value: "csv"
```

## データフォーマットサポート

### CSV変換

* **入力**: 2D配列、JSON配列、構造化データ
* **出力**: RFC 4180準拠CSV
* **機能**: 自動エスケープ、エンコーディング処理

### 画像からPDF

* **サポート形式**: TIFF、PNG、JPEG、GIFなど
* **入力**: 1回の変換につき最大10件の画像URL
* **出力**: PDFドキュメントのURL

### HTMLからPDF / DOCX

* **入力**: HTMLコンテンツ文字列と任意のファイル名（拡張子なし）
* **出力**: 生成されたPDFまたはDOCXファイルの署名付きURL
* **機能**: LLMが生成したHTMLをダウンロード可能なドキュメントに変換するのに便利

## ベストプラクティス

### CSV処理

* データ配列に常にヘッダーを含める
* 特殊文字（カンマ、引用符、改行）を処理
* 列内で一貫したデータ型を使用
* 変換前にデータを検証

### 画像変換

* 画像が公開URLを介してアクセス可能であることを確認
* ファイルサイズ制限を考慮
* パフォーマンス向上のため変換前に画像を最適化
* 整理のため適切なファイル名を使用

## 使用例

* **データエクスポート**: データベースクエリをExcel用CSVにエクスポート
* **レポート生成**: 処理されたデータをスプレッドシート形式に変換
* **文書作成**: チャートと画像をPDFに変換
* **データ移行**: 異なるシステム間でデータを変換
* **分析エクスポート**: ステークホルダー向けに分析結果をエクスポート
* **バックアップとアーカイブ**: データをポータブル形式に変換
* **統合**: 外部システムインポート用にデータを準備
