csv2newpage.inc.php

サマリCSVページからレコードを読み込んでページを自動生成するプラグイン
リビジョン0.8
対応バージョン1.4
投稿者sha
投稿日2003-08-08 (FRI) 00:28:00

背景

質問箱/234?」を受けて試しに作成。ユーザは若干1名以下かもしんないけど(^_^;)。という事情から、バージョンアップは、なるべくしない予定。。。需要があるなら考えますが。。。とか言ってるうちに、なかなか使い勝手の良いプラグインになってしまったようです。これで誰も使ってくれなかったらどうしよう。。。

概要

  • あるページの下層に、CSVファイルの各行に応じた新規ページを自動的に作成する。
  • しろくろのへや:tracker.inc.php」の「:config/plugin/tracker/設定名{,/page}」に準拠。
  • 内部でtracker.inc.phpattach.inc.phpの関数を呼んでいる。
  • ちなみに、ここで実験しています→「sha:csv2newpage.inc.php

操作概要

【0】準備
  1. :config/plugin/tracker/設定名/page」に自動作成するページのテンプレートを用意。
  2. :config/plugin/tracker/設定名」に、上のテンプレートで用いられるパラメータの定義を記述。同様に、「.../list」や「.../form」も用意しておく。

【1】CSVをページに添付すると同時に実行する場合
  1. 上層となるページを[新規]で作成し、そこに、#csv2newpage(設定名, upload, <スキップレコード数>, <フィールド順にパラメータ名を記述>)を記入。
  2. 「ページの更新」をすると、画面に#attachと同様の添付フィールドが出現するので、CSVファイルを指定して「添付&実行」ボタンを押す。
  3. そのページの各行が処理されて、そのページの下層に新規ページが自動生成される。

【2】CSVをページに記載して実行する場合
  1. 上層となるページを[新規]で作成し、CSVファイルをコピー&ペーストする。
  2. そのすぐ上の行に、#csv2newpage(設定名,<フィールド順にパラメータ名を記述>)を記入。
  3. 「ページの更新」をすると、画面に「実行」ボタンが表示されるので、それを押す。
  4. そのページの各行が処理されて、そのページの下層に新規ページが自動生成される。

使用法

ブロック型プラグイン

  • 引数の仕様
    #csv2newpage(設定名,[upload,<num_of_skiped_lines>],<CSV第1fieldのパラメータ名>,<CSV第2…>,...)
  • 引数の意味
    設定名:tracker.inc.php用に自分で用意する設定ページの名前
    upload: 「アップロード&実行」モードの指定。このとき、次の指定が必須。
    <num_of_skiped_lines>: CSVファイルのヘッダー飛ばし。先頭からのスキップ行数
    <CSV第1フィールドのパラメータ名>:tracker用に定義するパラメータ名
    <CSV第Nフィールドのパラメータ名>:上記と同様。フィールドの数だけ追記

使用例

【0】準備
  • 「:config/plugin/tracker/設定名」などの設定方法については、「しろくろのへや:tracker.inc.php」をご参照のこと。ここでは、
    :config/plugin/tracker/製品テーブル
    :config/plugin/tracker/製品テーブル/form
    :config/plugin/tracker/製品テーブル/page
    :config/plugin/tracker/製品テーブル/list
    とその中身を事前に用意したものとする。そこで定義したパラメータ名と、CSVの各フィールドを#csv2newpageの引数で対応付けする。

【1】CSVをページに添付すると同時に実行する方法
  1. 今、下記のようなCSVファイルがあったとする。
    製品名,モデル名,販売価格,担当者,電話番号
    オレンジPC,3H0123P,100000,担当A,03-1111-xxxx
    パイナップルPC,3H0124P,100000,担当B,03-1111-xxxx
    愛媛みかんPC,3H0125P,100000,担当C,03-1111-xxxx
    ごーやPC,3H0126P,100000,担当D,03-1111-xxxx
      ..... と続く .....
  2. このときに次のように「ページA」に記載する。
    #csv2newpage(製品テーブル, upload, 1, product, model, price, name, phone)
    • upload, 1,で、アップロード用フォームの表示と、CSVを先頭から1行スキップする指定となる。
    • 第1レコードの例では、productが「オレンジPC」、modelが「3H0123P」、priceが「100000」以下同様、と対応付く。
    • カンマや縦棒を、""で囲ってもフィールド区切りを避けることはできない。それらを含む文字列をCSVに用いてはいけない。面倒なので、これは仕様です。
    • もちろん、各パラメータ「product, model, price, name, phone」は前述の「:config/plugin/tracker/製品テーブル{,/form,/page,/list}」にて定義されていなければならない。
  3. すると、その場に、#attachと同様のファイルの添付フォームが出現するので、CSVファイルを指定して[添付&実行]ボタンを押す。
  4. すると、CSVファイルが「ページA」に添付されると同時に、CSVファイルの各行が処理されて、新規ページが「ページA」の下に生成される。
    • 同じCSVファイル名のファイルを実行しても、ファイル名が修正されて「ページA」に添付されます。この方法で実行したファイルは添付の形で残るので、どんな新規ファイルを生成したのかのログとして利用できます。

【2】CSVをページに記載して実行する方法
  1. 今、「ページA」にて下記のように記載する。CSVファイルの部分はコピー&ペーストして記載する。
    #csv2newpage(製品テーブル, product, model, price, name, phone)
    ,オレンジPC,3H0123P,100000,担当A,03-1111-xxxx
    ,パイナップルPC,3H0124P,100000,担当B,03-1111-xxxx
    ,愛媛みかんPC,3H0125P,100000,担当C,03-1111-xxxx
    ,ごーやPC,3H0126P,100000,担当D,03-1111-xxxx
      ..... と続く .....
    • CSVの各レコード(行)を入力する場合、その行頭に、カンマ「,」か半角スペース「 」か半角縦棒「|を挿入しておかなければならない。上の例はカンマ。
    • また、CSVのレコード以外に、これらを行頭に置いた行を作ってはいけない。誤動作する。
    • #csv2newpageの直後(子要素)のCSVを処理する。空行(半角空白行も含む)または次の#csv2newpageが来るまで、対象となるCSV行をサーチする。
    • それ以外の注意点は、前述(【1】2.)と同じ。
  2. 編集画面で[ページの更新]を押すと、「ページA」に[実行]ボタンが現れるので、それを押す。
  3. すると、CSVファイルの各行が処理されて、新規ページが「ページA」の下に生成される。

【表示例】↓


新規ページ生成:[実行]

オレンジPC3H0123P100000担当A03-1111-xxxx
パイナップルPC3H0124P100000担当B03-1111-xxxx
愛媛みかんPC3H0125P100000担当C03-1111-xxxx
ごーやPC3H0126P100000担当D03-1111-xxxx

【3】実行結果の表示
  • 【1】【2】の両方の場合で実行すると、「ページA/1」〜「ページA/4」というページ名で「:config/plugin/tracker/製品テーブル/page」のテンプレートに従って、新規生成され、新規されたページ名のリストを出力する。
    *Newpages under [[ページA]]
    + [[ページA/1]] --- オレンジPC,3H0123P,100000,担当A,03-1111-xxxx 
    + [[ページA/2]] --- パイナップルPC,3H0124P,100000,担当B,03-1111-xxxx
    + [[ページA/3]] --- 愛媛みかんPC,3H0125P,100000,担当C,03-1111-xxxx
    + [[ページA/4]] --- ごーやPC,3H0126P,100000,担当D,03-1111-xxxx
  • ちなみに、パラメータとして「_page」を用意しておくと、ページ名が数字ではない、CSVのフィールドの内容をページ名とする「ページA/ページ名」のページを生成する。
  • 特に【2】の場合、「ページA」内は、CSVの行頭にコメント記号「//」が挿入され、結局下記のようになる。
    #csv2newpage(製品テーブル, product, model, price, name, phone)
    //,オレンジPC,3H0123P,100000,担当A,03-1111-xxxx
    //,パイナップルPC,3H0124P,100000,担当B,03-1111-xxxx
    //,愛媛みかんPC,3H0125P,100000,担当C,03-1111-xxxx
    //,ごーやPC,3H0126P,100000,担当D,03-1111-xxxx
  • こうして完了する。
  • ちなみに、「ページA」内に#tracker_list(製品テーブル)を記述しておくと、生成されたページのリストが展開表示される。

ダウンロード

  • ここに添付しました。御利用下さい。
  • &ref(): ERROR: File not found: "csv2newpage.inc.php.8" at page "バックアップ/csv2newpage.inc.php";←提供中。
    バージョン内容
    v0.8:configのデフォルト値に対応
    v0.7debug/アップロード時に空白行をスキップ
    v0.6#csv2newpageの直後のCSVを処理。縦棒による処理は止め。細かいdebug
    v0.5debug/添付出来てなかった。他
    v0.4メッセージを一部修正
    v0.3CSVファイルをアップロード&実行
    v0.2debug/tracker.inc.php v1.7で動かなかった
    v0.1tracker.inc.phpを利用して新規作成

需要調査

このプラグインを使用していますか?一人1回のみ投票して下さい。

選択肢 投票
使用している 4  

コメント

  • sha 2003-08-08 (FRI) 14:53:35

    attach.inc.phpと連動して、「CSVファイルを添付すると同時に、その各レコードを処理して新規ページを生成する」っていう仕様でもいいかもね。

    • sha 2003-08-09 (SAT) 03:04:12

      なんかそういう機能も作っちゃいました。結構苦労しましたが、うまく動作しているようです。「sha:csv2newpage.inc.php」を参照のこと。

    • sha 2003-08-09 (SAT) 04:14:48

      うん。やっぱり、こちらの仕様の方がはるかに便利ですね。CSVファイルのアップロードとページ生成の実行が同時なのがうれしいところかな?

  • Kyosuke? 2003-08-09 (SAT) 14:29:07

    CSVをページ内に貼り付けるやり方で使わせていただきました。すばらしいです!これなら既存の表計算データ等をWiki上で簡単に活用できますね。ありがとうございました。

    • sha 2003-08-09 (SAT) 15:04:15

      どういたしまして。ポイントの一つは、tracker.inc.phpのフォーマットに従っているため、tracker.inc.php自体の#trackerを用いれば、「CSVファイルで作ったファイル群に、手作業で1ページずつ新規ページを追加することもできる」という点ですね。

  • sha 2003-08-09 (SAT) 17:57:24

    懸案事項としては、【2】の場合、現在「ページA」内の全ての行をチェックして、CSVに該当する部分を適用してますが、これを#csv2newpageを記載した直下から始まるCSV部分のみ適用するような仕様に変更することですね。複数の#csv2newpageが「ページA」に含まれていても、適用するCSVをちゃんと区別できるようにする必要があります。

    • sha 2003-08-09 (SAT) 22:20:58

      csv2newpage.inc.php.6にて対応済み。

  • sha 2003-08-14 (THU) 18:50:05

    懸案事項2として、CSVのテーブルに対応付けされてない項目について、デフォルト値を設定したり空文字を設定したりする必要がありました。csv2newpage.inc.php.7では、[name]などのパラメータがそのままページに埋め込まれてしまうので。

    • sha 2003-08-23 (SAT) 15:48:19

      csv2newpage.inc.php.8で対応。

##comment


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-04-03 (月) 22:08:58 (1193d)