概要

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

主な機能

ARRAY_TO_CSV

  • 2D配列をCSV形式に変換
  • シンプルで効率的な変換
  • データ構造と関係を維持
  • スプレッドシートアプリケーションと互換性

CONVERTER_ARRAY_TO_CSV

  • 自動エスケープを伴う強化されたCSV変換
  • 特殊文字(引用符、カンマ、改行)を処理
  • 堅牢なデータサニタイゼーション
  • 改行結合文字列出力

CONVERTER_IMAGE_TO_PDF

  • 画像をPDF形式に変換
  • PNG、JPEG、GIFなどをサポート
  • 高品質な変換
  • バッチ処理機能

認証

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

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

- 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: array
      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.csv}}"
    - name: filename
      value: "user_data_export.csv"
    - name: fileType
      value: "csv"

例: 売上レポート生成

- 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: ARRAY_TO_CSV
  input:
    - name: array
      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.csv}}"
    - name: filename
      value: "sales_report_{{date | format('YYYY-MM-DD')}}.csv"
    - name: fileType
      value: "csv"

例: 画像からPDFへの変換

- 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: image_url
      value: "{{steps.input_images.result.file_url}}"
    - name: filename
      value: "sales_chart.pdf"

- id: batch_image_conversion
  name: batch_image_conversion
  tool: PYTHON_SANDBOX_RUN
  input:
    - name: code
      value: |
        # PDF変換用の複数画像を処理
        image_urls = [
            "https://example.com/chart1.png",
            "https://example.com/chart2.png", 
            "https://example.com/chart3.png"
        ]
        
        conversion_tasks = []
        for i, url in enumerate(image_urls):
            task = {
                "step_id": f"convert_image_{i+1}",
                "tool": "CONVERTER_IMAGE_TO_PDF",
                "image_url": url,
                "filename": f"chart_{i+1}.pdf"
            }
            conversion_tasks.append(task)
        
        print("画像がバッチ変換の準備完了")
        print(f"画像総数: {len(image_urls)}")

例: 複雑なデータ変換

- 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: array
      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.csv}}"
    - name: filename
      value: "cleaned_data_export.csv"
    - name: fileType
      value: "csv"

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

CSV変換

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

画像からPDF

  • サポート形式: PNG、JPEG、JPG、GIF、BMP、TIFF
  • 出力: 高品質PDFドキュメント
  • 機能: 画像品質維持、適切なスケーリング

ベストプラクティス

CSV処理

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

画像変換

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

使用例

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