読者です 読者をやめる 読者になる 読者になる

高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

ふらっとステーション・とつかのイベントカレンダーを作成しました

以前からふらっとステーション・とつかのスタッフの方と話していたのですが、ふらっとステーション・とつかのイベントカレンダーを作成しました。Googleカレンダーですので、ご自分のカレンダーと一緒に表示することも出来ます。
詳細な情報は毎月1日前後にふらっとステーション・とつか館内やサイトに掲載されるわくわくだよりにも掲載されていますが、いちいち読むのが大変という方はどうぞご覧ください。

こちらのカレンダーは、スタッフの方から頂いたわくわくだよりの原稿を元に作成しています。

作成には、以前からときどきこちらでも紹介している、UWSCというソフトを使っており、UWSCでイベント告知一覧の内容を抜き出しCSVに→Googleカレンダーにインポート という手順で作成しています。UWSCは、本来キーボード&マウスマクロツールではありますが強力なスクリプト言語を実装しており、ちょっとした処理ならすぐに実現できます。

実際にどんな感じでやってる?

UWSCスクリプトでは、COMオブジェクトを扱えますので、VBAと同じレベルでWordを操作することが出来ます。また、GETACTIVEOLEOBJという、既に起動しているWordをCOMオブジェクトとして扱うメソッドがありますので、それを利用しています。

DIM word = GETACTIVEOLEOBJ( "Word.Application")

使ったオブジェクトは大まかに以下の通り。Wordにも表オブジェクトってちゃんと用意されてるんですね。Excelほどではないですがかなりのメソッドが実行されており、Wordの文章も比較的柔軟にパースすることが出来ます。

  • Documentオブジェクト
  • Tableオブジェクト
  • VBScript.RegExpオブジェクト(原稿の中から日付や時刻の文字列を抽出するのに利用)
  • Scripting.FileSystemObjectオブジェクト
  • Rowオブジェクト(たぶんここから下はExcelと同じ使い方)
  • Cellオブジェクト
  • Rangeオブジェクト

あとは、「太字の部分をタイトルとみなし抽出する」ということで、Paragraphオブジェクトを使えないかと試行錯誤してみましたが、結局うまくいかないのであきらめました。こういうものを作っていると、いくら使い捨てるつもりのソースコードでも、案外あとで修正したくなって、バージョン管理が必要になってくるというのを実感します。とりあえずBareリポジトリでも作っておけば良かったのか。


この辺のちょっとしたツールもそのうちどこかで紹介できれば良いですね。