■ about:スクリプトファイル ■
■結殖自動のスクリプトの役割
結殖自動では、スクリプトデータを読み込んでテキストタイプファイルの処理をします。
一般にいう「スクリプト」とは趣を異にしますが、基本的な条件と、データを差し込む内容についての設定をすれば、1本のスクリプトデータからそれこそ数100本のHTML(などの)データを書き出すことができます。
また、その内容についても「結殖自動」がこれらの情報をどのように利用して処理をすすめているのかが理解できれば容易に書くことができるものになっていますし、スクリプトをイチから書かなくても、基本のフォーマットさえ整っていれば、必要な部分を書き換えるだけで再利用や転用が可能なのもひとつの特徴といえます。
なお、使い方がわかればスクリプトファイル自身やテンプレートファイルさえも結殖自動で書き出すことができます。
使い方はけして難しくはありませんので、ぜひ挑戦してみてください。
■結殖自動のスクリプトの内容
結殖自動用スクリプトは、以下のような構造になっています。
実際に使われる環境を想定した方が分かりやすいかと思いますので、
ここでは中古車販売店が販売車両を登録したデータベースから吐き出したCSVをもとにHTMLを生成する場合を想定しています。
以下、基本的なルールから順を追って説明していきます。
#【基本情報設定部分】
{base}
#ルートパスを設定
{root-path="C:\kj\list\"}
#テンプレートファイルを設定。
{templete="C:\kj\templete.html"}
#CSVファイルを設定
{csv-file="C:\kj\list.csv"}
#変数設定
#置換テーブルのCSV上のラインを指定。
{table_line="1"}
#ここから置換テーブル
{\更新日\}="10"
{/base}
#------------------------------------------
#【HTML生成部分】
{process}
#ファイル名を設定
{write_file="all.html"}
#タイトル設定(テンプレートの{\title\}と置換される)
{inseart_title="全販売車両"}
#フラグを立てるテーブル(列)を指定。
{active_key="0"} #処理を開始するCSV行を指定。 {active_line="0"}
#フラグを立てたい文字列(↑が【0】の場合は不要)。
# {active_word=""}
# {instring_word=""}
#ここから置換テーブル
{$区分$}="2"
{$メーカー$}="4"
{$車種$}="5"
{$価格$}="6"
{$状態$}="7"
{$装備$}="8"
{$備考$}="9"
{/process}
#------------------------------------------
{process}
{write_file="tank.html"}
{insert_title="戦車"}
{active_key="2"}
{active_word="戦車"}
# {instring_word=""}
{$区分$}="2"
{$メーカー$}="4"
{$車種$}="5"
{$価格$}="6"
{$状態$}="7"
{$装備$}="8"
{$備考$}="9"
{/process}
#------------------------------------------
#以下、条件を変えながら、必要なだけ記述可能。
|
CSVファイルの方はこんな感じでしょうか…かなり特殊なお店のようですが。
…え、年式!?
| ID |
区分 |
仕入 |
メーカー |
車種 |
価格 |
状態 |
装備 |
備考 |
更新日 |
| 1 |
セダン |
英国 |
不明 |
FAB1 |
128.7 |
極上 |
水中翼、防弾ガラス、マシンガン、テレビ電話/他 |
パーカー紛失 |
2004/01/03 |
| 2 |
クーペ |
米国 |
GM |
ボンティアック・トランザム |
98.9 |
中 |
人工知能/レーザービーム/イジェクションシート/他 |
犬がよくなつく/口が悪い |
2004/01/03 |
| 3 |
戦車 |
独逸 |
ポルシェ |
VK4501(P) |
応談 |
新同 |
8.8cm砲/サンルーフ |
希少・エンジンモーター |
2004/01/03 |
■結殖自動スクリプトの基本的なルール
1)「#」で始まる行はコメントとして扱う
上記のスクリプトをご覧いただくと分かると思いますが、説明文などの文頭に「#」がついています。
このように、「#」から始まる文を、結殖自動はコメント文として扱いますので、覚書きやテスト用に書いたスクリプトなどは「#」をつけて処理から外すことができます。
なお、多少雑な作り方をしても大丈夫なように、文字列の内容を厳密に解析するようには作っていないので、「#」を付けないからといって即エラーになることはありませんが、ひとつの「お約束」として不要な部分には「#」を付けるようにしてください。
2)全体に作用する置換文字列と条件に合った部分にだけ作用する文字列
結殖自動では、置換文字列を以下のように区別しています。
全体置換文字列 :{\******\}
部分置換文字列 :{$******$}
※ともに、「*」の部分は任意の文字列になります。
{\〜\} のように半角の 「\」 で囲まれているものは、ヘッダやフッタを含めたページ全体に作用します。
具体的には、ページのタイトルや更新日など、個別のデータとは直接関係のない部分がそれにあたると思います。
対して {$〜$} のように半角の「$」で囲まれた部分は、個別のデータを差し込むための部分にあたり、ヘッダやフッタには一切作用しません。
これは、使い分けというよりも、テンプレートを書く際の指針としてそのようになっていると考えていただけると良いかと思います。
なお、このルールに関しては、後述するあらかじめ用意されている置換文字列と、ユーザーご自身が作成した文字列に共通のものになっています。
テンプレート、スクリプトともにこれに則って記述することになります。
3)結殖自動に最初から用意されている置換文字列
結殖自動では、ユーザー設定ではフォローしきれない部分の対応として、あらかじめいくつかの置換文字列が用意されています。
これらはおもにテンプレート作成時に必要となるものですが、一部はスクリプト側で設定する必要があるのと、あらかじめ用意されているものに関しては置換テーブルを作成する必要がないので、ここであげておきます。
なお、後述するテーブル設定に同じ文字列があった場合はユーザー設定を優先するように作成されています。
{\title\} ----スクリプト上でタイトルとして設定された文字列に置換
{\date\} ----現在の日付に置換 (全角)
{\hit_s\} ----ページ内の全ヒット数に置換(半角)
{\hit_w\} ----ページ内の全ヒット数に置換(全角)
{$count_s$} ----連番のカウントに置換 (半角)
{$count_w$} ----連番のカウントに置換 (全角) ※前項のルールがここでも適用されていることにもご注目ください。
■結殖自動のスクリプトを記述するその1({base}〜{/base})
結殖自動では、スクリプトの {base}〜{/base} に囲まれた部分を base ステートメントと呼びます。
このステートメントでは、生成される全ファイル/ヘッダ・フッタを含めたファイル全体の処理に関する設定を行います。
一見ややこしいように見えますが設定を必要とする部分はそれほど多くありません。
1)ルートパス {root-path="C:\**\****\"}(必須)
生成されたファイルを書き出す場所を指定します。
結殖自動は、誤動作防止のためにフォルダを作成する機能は搭載していませんので、指定したフォルダは先に作っておく必要があります。
※フォルダ名の前後は必ず半角の「"」で囲んでください。
パス名の後端の「\」はあってもなくてもOKです。
ただし、結殖自動では「\」を付けて処理しますので、後述するファイル名の設定などの際には、注意してください。
2)テンプレートファイル {templete="C:\**\****.html"}(必須)
ファイル生成時に必要となるテンプレートファイルを指定します。
テンプレートの仕様に関しては[こちら]をごらんください。
なお、HTML以外のファイルでも読み込みが可能な仕様になっています。
※ファイル名の前後は必ず半角の「"」で囲んでください。
3)CSVファイル {csv-file="C:\**\****.csv"}(必須)
テンプレートに埋め込む文字列の入ったCSVファイルを指定します。
CSVファイルの仕様に関しては[こちら]をごらんください。
※ファイル名の前後は必ず半角の「"」で囲んでください。
4)base 置換テーブル用CSV行設定 {table_line="*"}
base 置換ステートメント内に記述された置換テーブルで使用するCSV行を設定します。
ここで設定されるのは、テーブルの縦の位置(エクセルでいうところの「行」)になります。
※横位置に関しては、{table}〜{/table} ステートメントで設定します。
なお、一番上の行を「1」としていますので、上記のサンプルのように1行目に見出しが入っている場合には、データ行は2行目から始まることになります。
また、数値は半角で入れ、半角の「"」で囲んでください。
この設定は、base置換テーブルが設定されている場合のみ有効となりますが、もしその場合に設定されていなくても結殖自動は自動的に1行目からデータを拾うようになっています。
5)base 置換テーブル設定 {\****\}="*"
base置換テーブルを設定します。
ここで設定された内容は、ヘッダ/フッタを含めたページ全体に作用します。
不要なら削除してしまっても問題ありません。
置換文字列設定部分は以下の書式になります。
{\任意の文字列\}="列番号" 文字列の前後にはファイル全体に作用する文字列であることを示す「\」が付いています。
さて、これを実際にどういう場面で使うかといえば、例にあげた中古車屋さんのCSVファイルの左から10番目に(ページの)更新日として「2004/01/04」という日付が入っていると思います。
これを生成されるページに「■■/■/■更新」というような一文として反映させることができます。
その場合のスクリプト上の表記は例文にもあがっているとおり、
{\更新日\}="10"
※右辺の数字は半角文字で入れます。 …と、なります。
これにあわせて、テンプレート上に「 {\更新日\} 更新」 と 記載しておけば、処理後には「2004/01/04 更新」として変換されます。
また、必要に応じて項目数を追加することもできます。
{\更新日\}="10"
{\区分\}="2" このあたりは、実際にスクリプトを作って実感してみるのが一番だと思います。
なお、同様の base置換テーブルは最大8個項目まで設定することができますが、8個以上作成した場合は、問答無用で見なかったことにする仕様になっています。
また、別の注意点として、今回のCSVでは、1行目が見出しになっていますので、データ行から文字列を取り出すには {table_line="*"} の設定が必要になります。
詳しくは上記項目
4)base 置換テーブル用CSV行設定{table_line="*"} を参照してください。
■結殖自動のスクリプトを記述するその2({process}〜{/process})
結殖自動では、スクリプトの {process}〜{/process} に囲まれた部分を processステートメントと呼びます。
この部分では、書き出すファイル個別の情報を設定します。
書き出すファイルの数だけこのステートメントが必要となりますが、同じようなフォーマットのファイルを書き出すなら、コピーして必要な部分を変更するだけで1本分の process ステートメントを作成することができます。
なお、process ステートメントは一本のスクリプトファイルの中にいくつでも記述することができます。
さすがに数千本分とかになると限界が見えてくると思いますが、通常レベルでの利用なら支障は無いようには作られています。
1)書き出しファイル名 {write_file="****.html"} (必須)
ここでは、書き出すためのファイル名を設定します。
実際に書き出す際には base ステートメントで設定したルートパス名とあわせて、
[ルートパス]+[書き出しファイル名]
をフルパスでの書き出しファイル名として処理します。
裏技的な使い方になってしまいますが、この処理方法を応用して、ルートパス以下に作られたフォルダにファイルを書き出すことも可能です。
仮に、「c:\kj\list\list\」というルートパスが指定されていて、その下の階層にあたる「c:\kj\list\list\tank\」フォルダに「tiger.html」というファイルを保存したい場合は、書き出しファイル名を「tank\tiger.html」としてしまいます。
そうすると、結殖自動ではファイル名を「c:\kj\list\list\tank\tank\tiger.html」として処理することになりますので、めでたく目的の「c:\kj\list\list\tank\」フォルダにファイルが書き出されることになります。
なお、書き出しファイルは「HTML」以外でも問題ありません。
2)タイトル用文字列 {insert_title="****"}
ここでは、ページタイトルにあたる文字列を設定します。
ここで設定された文字列は、テンプレートに記述された「{\title\}」と差し替えられます。
ルールどおりページ全体に作用しますので、タイトルタグの部分や、ページ上でタイトルとして表示される部分など、テンプレートの必要な場所に「{\title\}」を設置して利用することができます。
なお、この設定が無くても問題なく動作します。
3)処理開始CSVライン {active_line="*"}
この項目では、処理を開始するCSV上のライン(行)を設定します。
見出し文字列など、処理に反映させたくない部分がある場合に設定します。
1番上の行を「"1"」として処理しますので、例にあげたCSVテーブルのような見出し行がある場合にこれを1行飛ばして処理する場合には2行目から開始するかたちになりますので「"2"」を設定します。
まお、この項目が指定されていない場合は自動的に「"1"」が設定され、1番上の行から順番にチェックしていくことになります。
4)フラグチェック用テーブル {active_key="*"} (必須)
この項目では、文字列チェックの際に使用するCSVテーブル上の「列」を設定します。
基本的に下記項目のフラグチェック用文字列と対で作用します。
たとえば、ここで {active_key="2"} と設定されている場合は、くだんの中古車屋さんCSVなら左から2列めの「区分」という列をチェック用の列として使用します。
なお、この項目に「"0"」を指定すると、CSV上のレコードをすべて書き出します。
その場合は、いずれのフラグチェック用の文字列も反映されませんが、見出し行などを飛ばして処理したい場合には、{active_line="*"} の設定が必要になります。
5)フラグチェック用文字列(完全一致) {active_word="****"} (条件によって必須)
結殖自動は、CSVのテーブルを上から順番に読み込み、フラグチェック用テーブルの内容と、この項目で設定された文字列が一致した場合を「ヒット」とみなします。
例に挙げたCSVテーブルを例にとると、 {active_key="2"} が設定されていて {active_word="戦車"} が指定されている場合、区分列の4行目「戦車」が「ヒット」しますので、4行目に記載されている情報がテンプレートに埋め込まれます。
その後、結殖自動はCSVを最終行まで読み込みますが、「ヒット」したものの情報のみをテンプレートに埋め込んで指定されたファイル名で書き出します。
※この項目は、下記の部分一致文字列が設定されている場合は無効になります。
※ {active_key="0"} の場合も無効になります。
6)フラグチェック用文字列(部分一致) {instring_word="****"} (条件によって必須)
この項目での設定の影響は、ほぼ上記「完全一致文字列」と共通となります。
ただし、部分一致モードではチェック用テーブルの文字列との完全な一致ではなく、ここで設定した文字列が、目標テーブルの中にあるかどうかをチェックします。
たとえば、部分一致文字列に「トラ」が設定されていた場合は、「トラ」はもちろんのこと「ウルトラマン」でも「トランザム」でも「ユートランド姫神」まで「ヒット」します(…って、いったい何のDBから吐き出したCSVなんでしょうか(^^;)。
もちろん、完全一致文字列では「トラ」以外はヒットしません。
使い道としては、中古車屋さんなら「RX」でチェックすればRX7とRX8の両方がヒットしますので、工夫すれば便利に使うことができます(ちなみに、RX-78も「ヒット」します)。 ※この項目が設定されている場合は、完全一致文字列は無効になります。
※ {active_key="0"} の場合、この項目は無効になります。
7)部分置換テーブルの設定 {$****$}="*"(必須)
部分置換テーブルを設定します。
ここで設定された内容は、テンプレートのファウンドパートに記述された置換文字列のみに作用します。
ファウンドパート以外には一切作用しませんので、ご注意ください。
置換文字列設定部分は以下の書式になります。
{$任意の文字列$}="列番号"
文字列の前後には部分的に作用する文字列であることを示す「$」が付いています。
さて、これに例にあげた中古車屋さんのCSVファイルの情報をすべてあてはめると、
{$ID$}="1" {$区分$}="2" {$仕入$}="3"
{$メーカー$}="4"
{$車種$}="5"
{$価格$}="6"
{$状態$}="7"
{$装備$}="8"
{$備考$}="9"
※右辺の数字は半角文字で入れます。
…と、なります。
が、もちろん必要なものだけ設定すればOKです。
これにあわせて、テンプレート上に「{$メーカー$}」「{$車種$}」 などと 記載しておけば、処理後にはテンプレートに各情報が埋め込まれてファイルに出力されます。
なお、ここでの置換テーブルは最大16項目まで設定することができますが、16個以上作成した場合は、base置換文字列同様、問答無用で見なかったことにする仕様になっています。
■以上ですが…
簡単とはいっても情報量そのものが多いので、一度にすべて覚えるのは難しいかもしれません。
しかし、実際にスクリプトファイルを加工しながらつき合わせてみてください。
加工した内容がどのように反映されるのかが体験できればきっと使いこなせるようになります。 |