#
# 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
オンでエクセル起動。エクセル新規ブック
「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}』をキー送信
オンの間
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+回数}」をエクセル選択
もし、回数が投稿数ならば、抜ける
男性投稿=結果@「投稿数」@「男」
女性投稿=結果@「投稿数」@「女」
男性投稿割合=INT(男性投稿/投稿数*100)
女性投稿割合=INT(女性投稿/投稿数*100)
好感投稿=結果@「投稿数」@「<感じる>」
不快投稿=結果@「投稿数」@「<感じない>」
好感投稿割合=INT(好感投稿/投稿数*100)
不快投稿割合=INT(不快投稿/投稿数*100)
男性人数=結果@「<感じる>」@「男」+結果@「<感じない>」@「男」
女性人数=結果@「<感じる>」@「女」+結果@「<感じない>」@「女」
人数=男性人数+女性人数
男性割合=INT(男性人数/人数*100)
女性割合=INT(女性人数/人数*100)
好感人数=結果@「<感じる>」@「男」+結果@「<感じる>」@「女」
不快人数=結果@「<感じない>」@「男」+結果@「<感じない>」@「女」
好感人数割合=INT(好感人数/人数*100)
不快人数割合=INT(不快人数/人数*100)
「B1」へ「{投稿数}通{~}{男性投稿}通 ({男性投稿割合}%){~}」&,
「{女性投稿}通 ({女性投稿割合}%){~}{好感投稿}通 ({好感投稿割合}%){~}」&,
「{不快投稿}通 ({不快投稿割合}%){~}{~}{人数}人{~}{男性人数}人 ({男性割合}%){~}」&,
「{女性人数}人 ({女性割合}%){~}{好感人数}人 ({好感人数割合}%){~}」&,
「{不快人数}人 ({不快人数割合}%)」をエクセル一括設定
「D10」へ「好感男性,{結果@『<感じる>』@『男』}人,好感女性,{結果@『<感じる>』@『女』}人{~}」&,
「不快男性,{結果@『<感じない>』@『男』}人,不快女性,{結果@『<感じない>』@『女』}人」をエクセル一括設定
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}」
住所別投稿表は「」
住所一覧を反復
表示済みは、いいえ
住所は対象。行=回数+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{行}」へ「{好感人数}人 ({好感割合}%),{不快人数}人 ({不快割合}%)」をエクセル一括設定
投稿数=結果@「投稿数」@「{対象}」
住所別投稿表=住所別投稿表&「{住所},{投稿数}通{~}」
住所別投稿表の1を表数値ソート
「住所,E{~}投稿数,F」をCSV取得して反復
「ソート{対象[0]}は住所別投稿表の{回数-1}を表列取得。ソート{対象[0]}を配列逆順」&,
「{[}{対象[1]}27{]}へソート{対象[0]}をエクセル一括設定」をナデシコする
「B1」をエクセル選択
おわり