SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

IEとExcelの連携 - ActiveXObjectを使ったIEとExcelの操作

Google検索の上位100位をスライド表示し、SEOツールとして活用してみる

IEとExcelの連携 - ActiveXObjectを使ったIEとExcelの操作 (3)

  • このエントリーをはてなブックマークに追加

ダウンロード source.zip (7.5 KB)

IEやExcelは、職場のほとんどのパソコン環境に入っており、多くの人が手軽に利用できるアプリケーションです。前回、前々回で、URL収集ツールとスライドショーを作りました。今回は、それらのソースコードを改造して、検索キーワードを元にGoogleの検索結果100位を日時付きで保存し、好きな日時のデータをスライドショー表示するアプリケーションを作ります。

  • このエントリーをはてなブックマークに追加

はじめに

 MicrosoftのInternet Explorer(以下、IE)やExcelは、職場のほとんどのパソコン環境に入っており、多くの人が手軽に利用できるアプリケーションです。これらのソフトは単体で利用することもできますが、簡単なプログラムを書くことで、便利に連動させて使うことが可能です。前々回は、WebページのURLをExcelにまとめて保存するアプリケーションを、前回は保存したデータをスライドショー表示するアプリケーションを作りました。

 今回は、それらのソースコードを改造して、検索キーワードを元に、Googleの検索結果100位を日時付きで保存し、好きな日時のデータをスライドショー表示するアプリケーションを作ります。簡単なSEOツールとして活用できる物なので、実用的だと思います。

 これまでの第1回、第2回とソースコードが被る部分が多いので、今回は大きな変更があった部分だけを取り上げ、最後に全部のソースコードを掲載する形式にしようと思います。まだこれまでの記事を読んでいない場合は、前々回前回の記事をまずは確認してみてください。

 それでは、以下、変更点を中心にアプリケーションを作成していきます。以下に利用イメージを示します。

検索してExcelで保存
検索してExcelで保存
スライドショー表示
スライドショー表示

 本記事は、以下の順序で進みます。

  1. 「ie2excel.hta」から「google_get.hta」への改造
  2. 「web_slide_show.hta」から「google_slide_show.hta」への改造
  3. まとめ

対象読者

 JavaScriptをある程度使いこなせる人、およびHTMLに関して基本的な知識がある人を対象にしています。

 また、プログラムの性質上、Excelを持っている方が対象になります。Excelは、ほとんどの職場環境に導入されていると思いますので、多くの方に当てはまると思います。

 今回の記事は、第1回第2回の記事を読んでいる人が対象になります。まだご覧になっていない方は、先に確認してください。

必要な環境

 IE 4.0以上が必要です。基本的には、IE 6.0以上を想定して作っています。ExcelはExcel 97以上を対象としています。本プログラムは、Windows XP+IE 6環境でテストしています。動作しない場合は、セキュリティの設定などを確認してください。

「ie2excel.hta」から「google_get.hta」への改造

 大きな改造点は2箇所です。変更点の1箇所目は、IEにわたすURLです。「ie2excel.hta」ではURLを入力してIEを開いていたのですが、「google_get.hta」では、検索キーワードを指定して、Googleの検索結果をIEで開いています。2箇所目は、リストの保存方法です。「ie2excel.hta」ではリストの末尾に追加していましたが、今回は、検索語と検索日時を最初の行に付けて、2列ずつ、横向きにデータを追加していきます。

 それでは、以下、大きな変更点があった部分のプログラムを示します。

「ie2excel.hta」から「google_get.hta」への改造
    var xlPath = "google_save.xls";    // Excelファイルのファイル名
    var colNoMax = 10000;              // 縦列最大値

    var googleUrl =
        "http://www.google.com/search?&hl=ja&num=100&lr=lang_ja"
      + "&ie=shift-jis&oe=shift-jis&q=";
:
:
    // IEにURLを渡す
    IE.Navigate( googleUrl + f.q.value );
:
:
    //==== Excelの入力位置を走査 =====================================
    //
    // 空行を探して、そこを入力開始位置にする
    //
    for ( colNo = 1; colNo < colNoMax; colNo ++ ) {
        // セルの文字列を取得
        cellStr = sheet.Cells( rowNo, colNo );

        // 空のセルを見つけたら抜ける
        if ( "" + cellStr == "undefined" ) {
            break;
        }
    }
:
:
    //==== Excelのセルに、検索語と日時を書き込み =====================
    //
    nowDate = new Date();

    year = nowDate.getYear();
    if ( year < 2000 ) year += 1900;
    mon  = nowDate.getMonth() + 1;
    date = nowDate.getDate();
    hour = nowDate.getHours();
    min  = nowDate.getMinutes();
    sec  = nowDate.getSeconds();

    sheet.Cells( rowNo, colNo ) = f.q.value;
    sheet.Cells( rowNo, colNo + 1 ) = year + "/" + mon + "/" + date
        + " " + hour + ":" + min + ":" + sec;
    rowNo ++;
:
:
    //==== IEからURLを取得してExcelのセルに書き込み ==================
    //
    //Aタグの配列を取得する
    aArry = IE.Document.getElementsByTagName( "a" );
    aArryLen = aArry.length;

    for ( i = 0; i < aArryLen; i ++ ) {
        // 空のリンクは飛ばす
        if ( aArry[i].innerText == "" || aArry[i].href == "" )
            continue;

        // 検索結果か確認
        if ( aArry[i].className != "l" ) continue;
:
:
    }
:
:
<form name="f">
検索したい言葉を入力して、ボタンを押してください。<br>
Googleでの検索結果のリストをExcelに保存します。<br>
<input type="txt" name="q" value="CodeZine" size=80><br>
<input type="button" value="Googleで検索" onClick="GetUrl()">
</form>

 まずはgoogleUrlを使って、googleUrl + f.q.valueとして、Googleでの検索結果のURLを作成しています。

 次にExcelの入力位置を走査する方向が、縦から横に変わっています。そして、1行目に検索語と検索日時を保存する処理を追加しています。また、データの保存先も「google_save.xls」に変更しています。

 これらの動きは、実際にアプリケーションを実行して確かめてください。

 最後に、ポイントとなるのはaArry[i].className != "l"という部分です。Googleの検索結果のHTMLのタグを見ると、どうやらこの部分が検索結果になっているようです。というわけで、この判定で、効率よく検索結果を収集することができます。そのうち変更される可能性もありますが、とりあえずはこれで大丈夫だと思います。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
「web_slide_show.hta」から「google_slide_show.hta」への改造

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
IEとExcelの連携 - ActiveXObjectを使ったIEとExcelの操作連載記事一覧

もっと読む

この記事の著者

柳井 政和(ヤナイ マサカズ)

クロノス・クラウン合同会社 代表社員http://crocro.com/オンラインソフトを多数公開。プログラムを書いたり、ゲームを作ったり、記事を執筆したり、マンガを描いたり、小説を書いたりしています。「めもりーくりーなー」でオンラインソフト大賞に入賞。最近は、小説家デビューして小説も書いています(『裏切りのプログラム』他)。面白いことなら何でもOKのさすらいの企画屋です。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1966 2008/01/23 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング