まとめ(完成プログラム)
完成したプログラムは次のとおりです。それぞれのソースコードを掲載しておきます。まず、このページでは、「google_get.hta」のソースコードを掲載します。
<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS"> <html> <head> <title>Googleの検索結果を保存</title> <script language="JavaScript"> //<!-- //==== ユーザー変数の初期化 ====================================== // 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="; //==== 共有変数の初期化 ========================================== // // XlWindowState - Excelのウィンドウ状態 var xlNormal = -4143; var xlMaximized = -4137; var xlMinimized = -4140; // XlFileFormat - Excelのファイルフォーマット var xlWorkbookNormal = -4143; //==================================================================== //======================================== // // URLの取得 // //======================================== // 引数 :なし // 返り値:なし // 仕様 :IEでURLを開き、XLに保存する。 function GetUrl () { //==== 変数を初期化 ============================================== // var IE; // IEオブジェクト var myPath; // スクリプトのパス var fs; // ファイルシステムオブジェクト var myFolder; // フォルダ名 var XL; // Excelオブジェクト var book; // Excelのワークブック var sheet; // Excelのワークシート var colNo = 1; // 縦列 var rowNo = 1; // 横列 var cellStr = ""; // セルの文字列 var i; // カウンター用変数 var aArry; // 配列用変数 var aArryLen; // 配列数用変数 var resStr = ""; // 結果表示用変数 var nowDate; // 時間用変数 var year, mon, date, hour, min, sec; //==== IEを初期化 ================================================ // // IEのオブジェクトを初期化 IE = new ActiveXObject( "Internet Explorer.Application" ); // IEのウィンドウの設定 IE.Left = 100; IE.Top = 100; IE.Width = 320; IE.Height = 480; IE.Visible = true; // IEにURLを渡す IE.Navigate( googleUrl + f.q.value ); //==== パスを初期化 ============================================== // // スクリプトのパスを取得 myPath = unescape( location.href ).replace( "file:///", "" ) .replace( /\//g, "\\" ); // ファイルシステムオブジェクトを初期化 fs = new ActiveXObject( "Scripting.FileSystemObject" ); // フォルダ名の取得 myFolder = fs.GetParentFolderName( myPath ) + "\\"; //==== Excelを初期化 ============================================= // // Excelのオブジェクトを初期化 XL = new ActiveXObject( "Excel.Application" ); // Excelのウィンドウの設定 XL.Visible = true; XL.WindowState = xlNormal; XL.Left = 420; XL.Top = 100; XL.Width = 320; XL.Height = 480; // ファイルを開く book = XL.WorkBooks.Open( myFolder + xlPath ); // 操作先シートを決定する sheet = book.worksheets(1); sheet.Activate; //==== Excelの入力位置を走査 ===================================== // // 空行を探して、そこを入力開始位置にする // for ( colNo = 1; colNo < colNoMax; colNo ++ ) { // セルの文字列を取得 cellStr = sheet.Cells( rowNo, colNo ); // 空のセルを見つけたら抜ける if ( "" + cellStr == "undefined" ) { break; } } //==== Excelの wait 関数を使って待機処理 ========================= // for ( i = 0; i < 100; i ++ ) { if ( IE.Busy ) { XL.wait(3); } else { 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; // Wikipediaなどの文字化け対策 var urlStr = aArry[i].href; var chkStr0 = aArry[i].href; var chkStr1 = encodeURI( aArry[i].href ); if ( chkStr0 != chkStr1 ) { urlStr = aArry[i].outerHTML.replace( /.*href="/, "" ) .replace( /".*/, "" ); } // Aタグ内の文字列とリンク先のURLをセルに代入 sheet.Cells( rowNo, colNo ) = aArry[i].innerText; sheet.Cells( rowNo, colNo + 1 ) = urlStr; // 操作位置を1行下に移動する rowNo ++; } //==== Excelを保存 =============================================== // // ダイアログを無視して保存させる // 保存のファイル形式を変える場合は、xlWorkbookNormalを他の値にする // // ダイアログを表示させないようにする XL.DisplayAlerts = false; // 保存 book.SaveAs( myFolder + xlPath, xlWorkbookNormal ); // ダイアログを表示するようにする XL.DisplayAlerts = true; //==== IEとExcelを閉じる ========================================= // IE.Quit(); XL.Quit(); //==== 結果の情報を表示 ========================================== // resStr += "取得したURLの数は " + ( rowNo - 2 ) + " 行です。\n\n"; alert( resStr ); } //==================================================================== //--> </script> </head> <body onLoad=""> <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> </body> </html>
次のページでは、スライドショーを行う「google_slide_show.hta」のソースコードを掲載します。
