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

このエントリーをはてなブックマークに追加
535アンケート自動集計ver.2.1 (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
536アンケート自動集計ver.2.1 (2/7):2005/06/14(火) 17:33:08
オンでエクセル起動。エクセル新規ブック
「A1」へ「投稿数{~}男性投稿{~}女性投稿{~}好感投稿{~}不快投稿{~}{~}人数{~}男性人数{~}」&,
「女性人数{~}好感人数{~}不快人数{~}{~}世代{~}10歳未満{~}10代{~}20代{~}30代{~}40代{~}」&,
「50代{~}60代{~}70代{~}80代{~}90代{~}100代{~}{~}{~}{~}{~}{~}番号」をエクセル一括設定
「B13」へ「好感人数,不快人数」をエクセル一括設定
「B30」へ「氏名,性別,年齢,住所,親しみ,題名,本文」をエクセル一括設定
「A26」へ「【注1】パーセントは小数点以下切り捨てで表記しました。
【注2】氏名・性別が同一の複数投稿は一人と見なしました。
【注3】複数投稿の場合、その人物の親近感は最新の投稿を反映しました。」をエクセル一括設定
「H30」をエクセル選択。「%D」をキー送信。「F」をキー送信。「F」をキー送信
「H30」をエクセル選択。「%O」をキー送信。「C」をキー送信。「W」をキー送信
「48」をキー送信。『{ENTER}』をキー送信
537アンケート自動集計ver.2.1 (3/7):2005/06/14(火) 17:33:56
オンの間
  URLは元URL&回数
  HTMLはURLのHTTPデータ取得して、それをSJIS変換
  条件は『g">(\d{1,4})\s*((?:(?!</).)+)』
  HTMLを条件で正規表現マッチ
  番号は抽出文字列[0]。もし、回数が1ならば、投稿数は番号
  題名は抽出文字列[1]
  データはHTMLから『span』のタグ切出
  親近感はデータ[0]のタグ削除して空白除去
  データ[1]のタグ削除を『.([^ ]+).(男|女).(\d{1,3}才).(.*)』で正規表現マッチ
  「氏名{~}性別{~}年齢{~}住所」を反復
    「{対象}は抽出文字列[{回数-1}]」をナデシコする
  世代はINT(年齢/10)*10&「代」
  データ[2]の『<br>』を「{~}」へ正規表現置換してタグ削除して本文に代入
  『[&]quot;,"{~}[&]#39;,'{~}[&]lt;,<{~}[&]gt;,>』をCSV取得して反復
    本文の対象[0]を対象[1]へ正規表現置換して本文に代入
  行=30+回数
  「A,番号{~}B,氏名{~}C,性別{~}D,年齢{~}E,住所{~}F,親近感{~}G,題名{~}H,本文」をCSV取得して反復
    「{[}{対象[0]}{行}{]}へ{対象[1]}をエクセルセル設定」をナデシコする
  結果@「投稿数」@「{親近感}」=結果@「投稿数」@「{親近感}」+1
  結果@「投稿数」@「{性別}」=結果@「投稿数」@「{性別}」+1
  結果@「投稿数」@「{住所}」=結果@「投稿数」@「{住所}」+1
  もし、結果@「{氏名}」@「{性別}」=「」ならば、
    結果@「{氏名}」@「{性別}」=「{親近感}」
    結果@「{親近感}」@「{性別}」=結果@「{親近感}」@「{性別}」+1
    結果@「{親近感}」@「{世代}」=結果@「{親近感}」@「{世代}」+1
    結果@「{親近感}」@「{住所}」=結果@「{親近感}」@「{住所}」+1
  もし、住所一覧を「{~}{住所}{~}」で正規表現マッチが「」ならば、住所一覧は住所一覧&「{住所}{~}」
  「A{30+回数}」をエクセル選択
  もし、回数が投稿数ならば、抜ける
538アンケート自動集計ver.2.1 (4/7):2005/06/14(火) 17:34:59
男性投稿=結果@「投稿数」@「男」
女性投稿=結果@「投稿数」@「女」
男性投稿割合=INT(男性投稿/投稿数*100)
女性投稿割合=INT(女性投稿/投稿数*100)
好感投稿=結果@「投稿数」@「<感じる>」
不快投稿=結果@「投稿数」@「<感じない>」
好感投稿割合=INT(好感投稿/投稿数*100)
不快投稿割合=INT(不快投稿/投稿数*100)
男性人数=結果@「<感じる>」@「男」+結果@「<感じない>」@「男」
女性人数=結果@「<感じる>」@「女」+結果@「<感じない>」@「女」
人数=男性人数+女性人数
男性割合=INT(男性人数/人数*100)
女性割合=INT(女性人数/人数*100)
好感人数=結果@「<感じる>」@「男」+結果@「<感じる>」@「女」
不快人数=結果@「<感じない>」@「男」+結果@「<感じない>」@「女」
好感人数割合=INT(好感人数/人数*100)
不快人数割合=INT(不快人数/人数*100)

「B1」へ「{投稿数}通{~}{男性投稿}通 ({男性投稿割合}%){~}」&,
「{女性投稿}通 ({女性投稿割合}%){~}{好感投稿}通 ({好感投稿割合}%){~}」&,
「{不快投稿}通 ({不快投稿割合}%){~}{~}{人数}人{~}{男性人数}人 ({男性割合}%){~}」&,
「{女性人数}人 ({女性割合}%){~}{好感人数}人 ({好感人数割合}%){~}」&,
「{不快人数}人 ({不快人数割合}%)」をエクセル一括設定
「D10」へ「好感男性,{結果@『<感じる>』@『男』}人,好感女性,{結果@『<感じる>』@『女』}人{~}」&,
「不快男性,{結果@『<感じない>』@『男』}人,不快女性,{結果@『<感じない>』@『女』}人」をエクセル一括設定
539アンケート自動集計ver.2.1 (5/7):2005/06/14(火) 17:37:57
11回
  世代は「{(回数-1)*10}代」
  好感人数=結果@「<感じる>」@「{世代}」。もし、好感人数が「」ならば、好感人数=0
  不快人数=結果@「<感じない>」@「{世代}」。もし、不快人数が「」ならば、不快人数=0
  世代人数=好感人数+不快人数
  好感割合=INT(好感人数/世代人数*100)
  不快割合=INT(不快人数/世代人数*100)
  「B{13+回数}」へ「{好感人数}人 ({好感割合}%)」をエクセルセル設定
  「C{13+回数}」へ「{不快人数}人 ({不快割合}%)」をエクセルセル設定

「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}」
住所別投稿表は「」
540アンケート自動集計ver.2.1 (6/7):2005/06/14(火) 17:38:47
住所一覧を反復
  表示済みは、いいえ
  住所は対象。行=回数+26。住所ID=回数
  住所の「^([^■])」を「 \1」へ正規表現置換して住所に代入
  もし、回数が59以下ならば、
    住所の「(?:県|府)」を「」に正規表現置換して住所に代入
    住所の「東京都」を「東京」に正規表現置換して住所に代入
  「A{行}」へ住所をエクセルセル設定
  地域積算一覧をCSV取得して反復
    もし、住所IDが対象[0]ならば、
      好感人数=0。不快人数=0
      対象[1]回
        好感人数=好感人数+結果@「<感じる>」@「{住所一覧[住所ID+回数-1]}」
        不快人数=不快人数+結果@「<感じない>」@「{住所一覧[住所ID+回数-1]}」
      好感割合=INT(好感人数/(好感人数+不快人数)*100)
      不快割合=INT(不快人数/(好感人数+不快人数)*100)
      「B{行}」へ「{好感人数}人 ({好感割合}%),{不快人数}人 ({不快割合}%)」をエクセル一括設定
      表示済みは、はい
  もし、表示済みがいいえならば、
    好感人数=結果@「<感じる>」@「{対象}」
    不快人数=結果@「<感じない>」@「{対象}」
    もし、好感人数が「」ならば、好感人数=0
    もし、不快人数が「」ならば、不快人数=0
    好感割合=INT(好感人数/(好感人数+不快人数)*100)
    不快割合=INT(不快人数/(好感人数+不快人数)*100)
    「B{行}」へ「{好感人数}人 ({好感割合}%),{不快人数}人 ({不快割合}%)」をエクセル一括設定
    投稿数=結果@「投稿数」@「{対象}」
    住所別投稿表=住所別投稿表&「{住所},{投稿数}通{~}」
541アンケート自動集計ver.2.1 (7/7):2005/06/14(火) 17:39:27
住所別投稿表の1を表数値ソート
「住所,E{~}投稿数,F」をCSV取得して反復
  「ソート{対象[0]}は住所別投稿表の{回数-1}を表列取得。ソート{対象[0]}を配列逆順」&,
  「{[}{対象[1]}27{]}へソート{対象[0]}をエクセル一括設定」をナデシコする

「B1」をエクセル選択
おわり