この連載では、Windows Script Host(以降、WSH)を使って、日常の業務や生活に役立つさまざまなスクリプトを紹介しています。スクリプトを利用する楽しさを味わう中で、その中で使われているさまざまな技術やテクニックを理解して頂ければと思います。
ゼロからはじめるWindows Script Host - 基本編
ゼロからはじめるWindows Script Host - テキスト読み書き編
ゼロからはじめるWindows Script Host - Excel連携編
ゼロからはじめるWindows Script Host - ファイルシステム編
ゼロからはじめるWindows Script Host - ショートカット編
ゼロからはじめるWindows Script Host - メール送信編
さて、第7回となる今回は、データベース連携編です。これまでスクリプトで参照するデータはもっぱらテキストファイルやExcelファイルで管理してきましたが、データの量が多くもなってくれば、データベースできちんとデータ管理したいという状況も出てくるはずです。データベースというと、なんとなくハードルが高いと敬遠してしまう方も多いようですが、大量のデータでもあらかじめ決められたルールの範囲で「きちんと」管理できるという長所があります。
たとえば、Excelなどでは数値を入れるべき欄に文字列を入力してしまったり、横5列の表だったはずなのに、途中からいつの間にか新しい[備考]列が追加されていたり、そもそも備考がセルの中に記入されていたり、コメント機能で記されていたりと、自由であるがゆえに、データはどうしても汚くなりがちです。
しかし、データベースであれば、あらかじめ入力できる列(フィールド)や、そこに格納できるデータ型が決まっていますので、こうしたユーザ依存の不統一はデータベースが未然に防いでくれます(*)。 また、データの量が何千件、何万件と増えた場合にも、高いパフォーマンスで処理を行えます。なにからなにまでデータベース化する必要もありませんが、必要に応じて、データベースという媒体をデータ管理の選択肢に加えておくのは悪いことではありません。
*)もちろん、Excelでも入力規則などの機能を利用すれば、入力に制約を設けることはできますが、データベースに比べると、その手続きはむしろ面倒です。
さて本稿では、スクリプトからデータベースにアクセスする方法について解説していきます。本稿で紹介するサンプルは、メール送信編でも作成したメール送信スクリプトです。メール送信編では、メールアドレスのリストをタブ区切りテキストの形式で管理していましたが、今回は、これをAccessデータベース(.mdbファイル)に置き換えてみましょう。
AccessはMicrosoft Officeに含まれるデータベース製品で、パーソナル用途のデータベースとして非常によく使われています。不特定多数のユーザが同時アクセスするような用途には不向きですが、個人、または部門内で共有するデータであれば、まずはAccessで十分に管理できるはずです。なお、本稿ではAccessそのものについての解説は行いません。Accessに関する詳細は別途、専門書や関連記事を参照するようにしてください。
メールを自動送信するための準備
まずは、メール配信のためのアドレスリストを、Accessデータベースに用意しておきます。データベースファイルの名前はmail.mdb、テーブル名はemailとします。もちろん、ファイル/テーブル名や自由に変更しても構いませんが、その場合は、後述するスクリプトの対応する箇所も変更する必要がありますので注意してください。
emailテーブルのフィールドレイアウトは、以下の通りです。また、作成したemailテーブルには必要に応じて、配信先のアドレスを入力しておくようにしてください。
emailテーブルのフィールドレイアウト
フィールド名 | データ型 | サイズ | 概要 |
---|---|---|---|
address | テキスト型 | 255 | 電子メールアドレス(主キー) |
nam | テキスト型 | 50 | 名前 |
また、メール送信編でも利用したメール本体を表すテキスト(mail.dat)は、本稿でもそのまま利用します。データベースファイルと同じフォルダに保存しておくようにしてください。
[リスト01]mail.dat
#TO_NAME#さま:
【WINGS News 2009年10月号】
WINGS Newsの購読を停止したい方は、本レター末尾の説明を参照下さい
■━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◆
■□■ 月 刊 W I N G S http://www.wings.msn.to/
■━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◆
...後略...