目次

  1. 概要
  2. 設定
    1. 使用するシート名の定義
    2. ノードの定義
      1. name
      2. type
      3. cls
      4. children
      5. params
      6. options
        1. header
        2. fields
    3. 階層の定義

概要

xlgan で xlsx ファイルをバックエンドに使用する際の設定内容を解説します。

設定

使用するシート名の定義

使用するシート名は sheetName で定義します。

xlsxConfig = {
    'sheetName': u'Sampleカット表',
    'taskdef': {
        'Global': {
(以下略)

ノードの定義

taskdef で定義されている項目一つ一つがノードになります。

Category ノードを例に詳細を説明します。

        'Category': {
            'name': '*',
            'type': 'Category',
            'cls':  xlsx.Task,
            'children': ['Element'],
            'params' : [xlsxTaskParamGetter,
                        xlsxTaskParamSetter],
            'options': {
                'header': 'A5',
                'fields': {
                    'name': u'category',
                }
            }
        },

name

このノードで使用可能な名前を正規表現で記述します。ここでは "*" となっているので、どのような名前も受け付けることができるようになっています。

type

ノードのタイプです。 ToDo: 詳細内容を記述する

cls

このノードで使用するクラスです。通常は xlsx.Task を指定しておけば良いですが、自分で作成したクラスを使用したい場合はここで指定します。

children

このノードの子供になることのできるノードのリストです。今回の場合、Category ノードの子は Element ノードだけになります。

params

このノードの値を読み書きする際に使用する関数です。スプレッドシートと xlgan の間でパラメータの変換が必要な場合、ここで指定した関数を用いて対応します。

options

スプレッドシートのフォーマットが変更された場合に設定を書き換える必要のある場所です。

対応するノードの左上のセルです。図の赤い部分が該当します。

xlsxConfig_header.png

fields

xlgan 内で扱うフィールドを指定します。 辞書のキーが xlgan 内での名前、値がスプレッドシート上のヘッダ名です。ここに記述されていない項目は xlgan 上では無視されます。

xlsxConfig_fields.png

階層の定義

xlsxConfig['taskdef'] で、どのような階層があるのか定義します。

以下に一部を切り出したものを掲載します。

xlsxConfig = {
    'sheetName': u'Sampleカット表',
    'taskdef': {
        'Global': {
            'name': None,
            'type': None,
            'cls': None,
            'children': ['GlobalAssets', 'GlobalShots'],
            (中略)
        },

        'GlobalAssets': {
            'name': 'assets',
            'type': 'Global',
            'cls': xlsx.TaskGlb,
            'children': ['Category'],
            (中略)
        },

        'Category': {
            'name': '*',
            'type': 'Category',
            'cls':  xlsx.Task,
            'children': ['Element'],
            (中略)
        },

(中略)

        'GlobalShots': {
            'name': 'shots',
            'type': 'Global',
            'cls':  xlsx.TaskGlb,
            'children': ['Episode'],
            (中略)
        },

(以下略)

ノード中の children で親子関係を設定しています。上記の例であれば

Global
  + GlobalAssets
   |  +Category
   |        :
   |
  + GlobalShots
      + Episode
            :

という構造になります。