日本語プログラム言語「なでしこ」板

このエントリーをはてなブックマークに追加
524アンケート自動集計ver.2 (1/7)
#
# NHK-BSアンケート自動集計プログラム
# 【調査対象】 http://www.nhk.or.jp/bsdebate/0506/mail_01.html
# 【内容】 上記サイトのアンケートを収集しエクセルに出力します。
#      投稿数情報、人数情報、本文等を各種表形式に整理します。
# 【制約】 OS:Windows、インターネット接続環境、エクセル必要
# 【使用方法】 日本語プログラミング言語「なでしこ」をダウンロードし、
#      下記プログラムを実行します。データ転送中にエクセルのセルを
#      クリックすると、エラーが発生する恐れがあるためご注意ください。
# 【使用言語】日本語プログラミング言語「なでしこ」
#      公式サイト http://www.nadesi.com
#

元URLは「http://cgi2.nhk.or.jp/bsdebate/cgi-bin/cgi_svr/view_opinion_detail.cgi?themeid=26&itemid=119&recid=
住所一覧は「■北海道{~}北海道{~}■東北{~}青森県{~}岩手県{~}宮城県{~}秋田県{~}」&,
「山形県{~}福島県{~}■関東{~}東京都{~}神奈川県{~}埼玉県{~}千葉県{~}茨城県{~}」&,
「栃木県{~}群馬県{~}山梨県{~}■信越{~}新潟県{~}長野県{~}■北陸{~}富山県{~}」&,
「石川県{~}福井県{~}■東海{~}愛知県{~}岐阜県{~}静岡県{~}三重県{~}■近畿{~}」&,
「大阪府{~}兵庫県{~}京都府{~}滋賀県{~}奈良県{~}和歌山県{~}■中国{~}鳥取県{~}」&,
「島根県{~}岡山県{~}広島県{~}山口県{~}■四国{~}徳島県{~}香川県{~}愛媛県{~}」&,
「高知県{~}■九州{~}福岡県{~}佐賀県{~}長崎県{~}熊本県{~}大分県{~}宮崎県{~}」&,
「鹿児島県{~}■沖縄{~}沖縄県{~}■他{~}」
投稿数とは整数。結果とはハッシュ。結果は「」
住所一覧を反復
  結果@「投稿数」@「{対象}」=0
  結果@「<感じる>」@「{対象}」=0
  結果@「<感じない>」@「{対象}」=0
525アンケート自動集計ver.2 (2/7):2005/06/13(月) 06:26:01
オンでエクセル起動
エクセル新規ブック
セル一覧は「A1,投稿数{~}A2,男性投稿{~}A3,女性投稿{~}A4,好感投稿{~}A5,不快投稿{~}」&,
「A7,人数{~}A8,男性人数{~}A9,女性人数{~}A10,好感人数{~}C10,好感男性{~}E10,好感女性{~}」&,
「A11,不快人数{~}C11,不快男性{~}E11,不快女性{~}A13,世代{~}B13,好感人数{~}」&,
「C13,不快人数{~}A14,10歳未満{~}A15,10代{~}A16,20代{~}A17,30代{~}A18,40代{~}」&,
「A19,50代{~}A20,60代{~}A21,70代{~}A22,80代{~}A23,90代{~}A24,100代{~}A30,番号{~}」&,
「B30,氏名{~}C30,性別{~}D30,年齢{~}E30,住所{~}F30,親しみ{~}G30,題名{~}H30,本文」
セル一覧をCSV取得して反復
  対象[0]へ対象[1]をエクセルセル設定
「A26」へ「【注1】パーセントは小数点以下切り捨てで表記しました。
【注2】氏名・性別が同一の複数投稿は一人と見なしました。
【注3】複数投稿の場合、その人物の親近感は最新の投稿を反映しました。」をエクセル一括設定
「H30」をエクセル選択。「%D」をキー送信。「F」をキー送信。「F」をキー送信
「H30」をエクセル選択。「%O」をキー送信。「C」をキー送信。「W」をキー送信
「48」をキー送信。『{ENTER}』をキー送信
526アンケート自動集計ver.2 (3/7):2005/06/13(月) 06:27:07
オンの間
  URLは元URL&回数
  HTMLはURLのHTTPデータ取得して、それをSJIS変換
  条件は『g">(\d{1,4})\s*((?:(?!</).)+)』
  HTMLを条件で正規表現マッチ
  番号は抽出文字列[0]。もし、回数が1ならば、投稿数は番号
  題名は抽出文字列[1]
  データはHTMLから『span』のタグ切出
  親近感はデータ[0]のタグ削除して空白除去
  データ[1]のタグ削除を『.([^ ]+).(男|女).(\d{1,3}才).(.*)』で正規表現マッチ
  氏名は抽出文字列[0]
  性別は抽出文字列[1]
  年齢は抽出文字列[2]
  世代はINT(年齢/10)*10&「代」
  住所は抽出文字列[3]
  データ[2]の『<br>』を「{~}」へ正規表現置換してタグ削除
  本文はそれの『"』を「"」へ正規表現置換
  本文はそれの『'』を「'」へ正規表現置換
  本文はそれの『<』を「<」へ正規表現置換
  本文はそれの『>』を「>」へ正規表現置換
  
  「A{30+回数}」へ番号をエクセルセル設定
  「B{30+回数}」へ氏名をエクセルセル設定
  「C{30+回数}」へ性別をエクセルセル設定
  「D{30+回数}」へ年齢をエクセルセル設定
  「E{30+回数}」へ住所をエクセルセル設定
  「F{30+回数}」へ親近感をエクセルセル設定
  「G{30+回数}」へ題名をエクセルセル設定
  「H{30+回数}」へ本文をエクセルセル設定
527アンケート自動集計ver.2 (4/7):2005/06/13(月) 06:28:13
  # インデント(字下げ)に注意!
  結果@「投稿数」@「{親近感}」=結果@「投稿数」@「{親近感}」+1
  結果@「投稿数」@「{性別}」=結果@「投稿数」@「{性別}」+1
  結果@「投稿数」@「{住所}」=結果@「投稿数」@「{住所}」+1
  もし、結果@「{氏名}」@「{性別}」=「」ならば、
    結果@「{氏名}」@「{性別}」=「{親近感}」
    結果@「{親近感}」@「{性別}」=結果@「{親近感}」@「{性別}」+1
    結果@「{親近感}」@「{世代}」=結果@「{親近感}」@「{世代}」+1
    結果@「{親近感}」@「{住所}」=結果@「{親近感}」@「{住所}」+1
  もし、住所一覧を「{~}{住所}{~}」で正規表現マッチが「」ならば、
    住所一覧は住所一覧&「{住所}{~}」
  「A{30+回数}」をエクセル選択
  もし、回数が投稿数ならば、抜ける

男性投稿=結果@「投稿数」@「男」
女性投稿=結果@「投稿数」@「女」
男性投稿割合=INT(男性投稿/投稿数*100)
女性投稿割合=INT(女性投稿/投稿数*100)
好感投稿=結果@「投稿数」@「<感じる>」
不快投稿=結果@「投稿数」@「<感じない>」
好感投稿割合=INT(好感投稿/投稿数*100)
不快投稿割合=INT(不快投稿/投稿数*100)
男性人数=結果@「<感じる>」@「男」+結果@「<感じない>」@「男」
女性人数=結果@「<感じる>」@「女」+結果@「<感じない>」@「女」
人数=男性人数+女性人数
男性割合=INT(男性人数/人数*100)
女性割合=INT(女性人数/人数*100)
好感人数=結果@「<感じる>」@「男」+結果@「<感じる>」@「女」
不快人数=結果@「<感じない>」@「男」+結果@「<感じない>」@「女」
好感人数割合=INT(好感人数/人数*100)
不快人数割合=INT(不快人数/人数*100)
528アンケート自動集計ver.2 (5/7):2005/06/13(月) 06:29:07
「B1」へ「{投稿数}通」をエクセルセル設定
「B2」へ「{男性投稿}通 ({男性投稿割合}%)」をエクセルセル設定
「B3」へ「{女性投稿}通 ({女性投稿割合}%)」をエクセルセル設定
「B4」へ「{好感投稿}通 ({好感投稿割合}%)」をエクセルセル設定
「B5」へ「{不快投稿}通 ({不快投稿割合}%)」をエクセルセル設定
「B7」へ「{人数}人」をエクセルセル設定
「B8」へ「{男性人数}人 ({男性割合}%)」をエクセルセル設定
「B9」へ「{女性人数}人 ({女性割合}%)」をエクセルセル設定
「B10」へ「{好感人数}人 ({好感人数割合}%)」をエクセルセル設定
「D10」へ「{結果@『<感じる>』@『男』}人」をエクセルセル設定
「F10」へ「{結果@『<感じる>』@『女』}人」をエクセルセル設定
「B11」へ「{不快人数}人 ({不快人数割合}%)」をエクセルセル設定
「D11」へ「{結果@『<感じない>』@『男』}人」をエクセルセル設定
「F11」へ「{結果@『<感じない>』@『女』}人」をエクセルセル設定
11回
  世代は「{(回数-1)*10}代」
  好感人数=結果@「<感じる>」@「{世代}」。もし、好感人数が「」ならば、好感人数=0
  不快人数=結果@「<感じない>」@「{世代}」。もし、不快人数が「」ならば、不快人数=0
  世代人数=好感人数+不快人数
  もし、世代人数=0ならば、
    好感割合=0
    不快割合=0
  違えば、
    好感割合=INT(好感人数/世代人数*100)
    不快割合=INT(不快人数/世代人数*100)
  「B{13+回数}」へ「{好感人数}人 ({好感割合}%)」をエクセルセル設定
  「C{13+回数}」へ「{不快人数}人 ({不快割合}%)」をエクセルセル設定
529アンケート自動集計ver.2 (6/7):2005/06/13(月) 06:32:15
「A25:A{住所一覧の要素数+26}」をエクセル選択。「%I」をキー送信。「R」をキー送信
「A26」へ「住所,好感人数,不快人数,,住所,投稿数」をエクセル一括設定
地域積算一覧は「1,1{~}3,6{~}10,8{~}19,2{~}22,3{~}26,4{~}31,6{~}38,5{~}44,4{~}」&,
「49,7{~}57,1{~}59,{住所一覧の要素数-59}」
住所別投稿表は「」

住所一覧を反復
  表示済みは、いいえ
  住所は対象。行=回数+26。住所ID=回数
  住所の「^([^■])」を「 \1」へ正規表現置換して住所に代入
  もし、回数が59以下ならば、
    住所の「(?:県|府)」を「」に正規表現置換して住所に代入
    住所の「東京都」を「東京」に正規表現置換して住所に代入
  「A{行}」へ住所をエクセルセル設定
  地域積算一覧をCSV取得して反復
    もし、住所IDが対象[0]ならば、
      好感人数=0。不快人数=0
      対象[1]回
        好感人数=好感人数+結果@「<感じる>」@「{住所一覧[住所ID+回数-1]}」
        不快人数=不快人数+結果@「<感じない>」@「{住所一覧[住所ID+回数-1]}」
      好感割合=INT(好感人数/(好感人数+不快人数)*100)
      不快割合=INT(不快人数/(好感人数+不快人数)*100)
      「B{行}」へ「{好感人数}人 ({好感割合}%),{不快人数}人 ({不快割合}%)」をエクセル一括設定
      表示済みは、はい
530アンケート自動集計ver.2 (7/7):2005/06/13(月) 06:33:00
  # インデント(字下げ)に注意!
  もし、表示済みがいいえならば、
    好感人数=結果@「<感じる>」@「{対象}」
    不快人数=結果@「<感じない>」@「{対象}」
    もし、好感人数が「」ならば、好感人数=0
    もし、不快人数が「」ならば、不快人数=0
    好感割合=INT(好感人数/(好感人数+不快人数)*100)
    不快割合=INT(不快人数/(好感人数+不快人数)*100)
    「B{行}」へ「{好感人数}人 ({好感割合}%),{不快人数}人 ({不快割合}%)」をエクセル一括設定
    投稿数=結果@「投稿数」@「{対象}」
    住所別投稿表=住所別投稿表&「{住所},{投稿数}通{~}」

住所別投稿表の1を表数値ソート
ソート住所は住所別投稿表の0を表列取得
ソート投稿数は住所別投稿表の1を表列取得
ソート住所を配列逆順
ソート投稿数を配列逆順
「E27」へソート住所をエクセル一括設定
「F27」へソート投稿数をエクセル一括設定

「B1」をエクセル選択
おわり
531>>526 アンケート自動集計ver.2 (3/7) 修正:2005/06/13(月) 07:04:08
オンの間
  URLは元URL&回数
  HTMLはURLのHTTPデータ取得して、それをSJIS変換
  条件は『g">(\d{1,4})\s*((?:(?!</).)+)』
  HTMLを条件で正規表現マッチ
  番号は抽出文字列[0]。もし、回数が1ならば、投稿数は番号
  題名は抽出文字列[1]
  データはHTMLから『span』のタグ切出
  親近感はデータ[0]のタグ削除して空白除去
  データ[1]のタグ削除を『.([^ ]+).(男|女).(\d{1,3}才).(.*)』で正規表現マッチ
  氏名は抽出文字列[0]
  性別は抽出文字列[1]
  年齢は抽出文字列[2]
  世代はINT(年齢/10)*10&「代」
  住所は抽出文字列[3]
  データ[2]の『<br>』を「{~}」へ正規表現置換してタグ削除
  本文はそれの『[&]quot;』を「"」へ正規表現置換
  本文はそれの『[&]#39;』を「'」へ正規表現置換
  本文はそれの『[&]lt;』を「<」へ正規表現置換
  本文はそれの『[&]gt;』を「>」へ正規表現置換
  
  「A{30+回数}」へ番号をエクセルセル設定
  「B{30+回数}」へ氏名をエクセルセル設定
  「C{30+回数}」へ性別をエクセルセル設定
  「D{30+回数}」へ年齢をエクセルセル設定
  「E{30+回数}」へ住所をエクセルセル設定
  「F{30+回数}」へ親近感をエクセルセル設定
  「G{30+回数}」へ題名をエクセルセル設定
  「H{30+回数}」へ本文をエクセルセル設定