(WindowScriptHostの活用) ASとPCの新たな連携 (WindowScriptHostの活用) 株式会社 アクセル
空白ページ
これまでの連携手法 PCの機能 ・Excel ・PDF ・画像 ・テキストファイル ・CSV 基本的にダメ ■STRPCCMDが、PC側のコマンドを実行できる 123文字の制限 / 返事? /固定的呼び出し
スクリプト・オートメーションの歴史 スクリプトオートメーションとは、 テキストベースのスクリプトを利用し、複数の処理の実行を自動化する技術 バッチファイル ・複数の処理を羅列 ・簡単な論理判断 WSH (Windows Script Host) ・JavascriptまたはVBscriptで記述 ・Shellに含まれない Power Shell ・2003年、発表
WSHの例・その1 ファイルがあったら、削除する //----ファイル名を 指定 filename=“C:\\Users\\AA\\Desktop\\aaaaa.pdf" //----オブジェクトを生成 fso = WScript.CreateObject("Scripting.FileSystemObject") //----ファイルの存在をチェック if( fso.fileExists( fileName ) ){ fso.DeleteFile( fileName) //----ファイルを削除 }
WSHの例・その2 Excelを開く //----ファイルを指定 url = "http://www1.axel.ne.jp/iwrdoc/qtemp/SPL2FMT.xls" //----Excelオブジェクトを生成 var ExcelApp = new ActiveXObject( "Excel.Application" ); //----Excelを表示 ExcelApp.Visible = true ; //----ブックを開く var book = ExcelApp.Workbooks.Open( url );
WSHの例・その3 Excelを開き、PDFを作成する //----ファイルを指定 url = "http://www1.axel.ne.jp/iwrdoc/qtemp/SPL2FMT.xls" //----Excelオブジェクトを生成 var ExcelApp = new ActiveXObject( "Excel.Application" ); //----Excelを表示 ExcelApp.Visible = true ; //----ブックを開く var book = ExcelApp.Workbooks.Open( url ); var sheet = book.Worksheets( 1 ); // 1 シート目のオブジェクト //----------------------------------------------------------------------------------------- //----PDFを作成する outfile="C:\\Users\\ohtsuki\\Desktop\\aaaaa.pdf" sheet.PageSetup.Orientation = xlPortRait // 印刷方向設定 :縦 sheet.PageSetup.Orientation = xlLandscape // 印刷方向設定 :横 // PDF作成 book.ExportAsFixedFormat(0, outfile, 0, true, false,1 ,999 ,true)
WSHの起動 AAAA.js ネットワーク AAAA.js ファイル関連付け WSHエンジン ■PCローカルの場合、ダブルクリックで起動 ■ネットワークからの場合、ブラウザーを経由し、 『ファイルの関連付け』で、WSHエンジンを起動する ■下のメッセージが出る
WSHを記述するファイル Jsファイル (¥scriptを記述) WSFファイル (¥scriptを記述) WSFファイル <?xml version="1.0" encoding="shift_jis"?> <job> <script src="http://www1.axel.ne.jp/iws/js/commonWSF.js"></script> <script> <![CDATA[ (scriptを記述) ]]> </script> </job> ■WSF(WindowsScriptFile)は、複数の処理を記述できる ■外部のscriptを呼び込むことも可能
i-webでWSFを処理 ソースファイル http://・・/iweb/WSH005.WSF IWGPL/QHTM WSH005 <?xml version="1.0“> <job> <script src=“・・・”> <script> <![CDATA[ (scriptを記述) ]]> </script> </job> WSHエンジン WSF005に記述された PCの処理を実行
WSFサンプル・その1 Excelを作成 Excel作成 http://・・・・/iweb/WSF005.WSF WSF 1.新規ExcelをOpen 2.タイトル・セル枠などを設定 3.データを書き出し
WSFサンプル・その1-1 Excel作成 http://・・・・/iweb/WSF005.WSF <?xml version="1.0" encoding="shift_jis"?> <job> <script src="http://www1.axel.ne.jp/iws/js/commonWSF.js"></script> <script> <![CDATA[ // Excel 操作 --------------------------------------------------------- var ExcelApp = new ActiveXObject( "Excel.Application" ); // Excel オブジェクトを取得 (Excel の起動 ) ExcelApp.Visible = true; // Excel アプリケーションを表示 var book = ExcelApp.Workbooks.Add(); // 新しいブックを追加 var sheet = book.Worksheets( 1 ); // 1 シート目のシートオブジェクトを取得 //============================================================================= // タイトルの設定 with(sheet.Range("C1","F1")){ Borders(xlEdgeTop ).LineStyle = xlContinuous // 上 Borders(xlEdgeBottom).LineStyle = xlContinuous // 下 Borders(xlEdgeRight ).LineStyle = xlContinuous // 右 Borders(xlEdgeLeft ).LineStyle = xlContinuous // 左 Interior.ColorIndex = 15 // 背景色 ( 灰色) // セル枠の設定 for(var i=3 ; i < 10 ; i++){ for(var j=1 ; j < 10 ; j++){ with( sheet.Cells(i,j)) { Borders(xlEdgeRight ).LineStyle = xlContinuous // 右 Borders(xlEdgeLeft ).LineStyle = xlContinuous // 左 }
WSFサンプル・その1-2 //============================================================================= // 背景色の設定 for(var j=1 ; j < 10 ; j++){ with( sheet.Cells(3,j)) { Interior.ColorIndex = 15 } // 見出しの設定 sheet.Cells(3,1).value = " 商品コード "; sheet.Cells(3,2).value = " 商品名 "; sheet.Cells(3,3).value = " メーカー "; sheet.Cells(3,4).value = " 品種 "; sheet.Cells(3,5).value = " 単価 "; sheet.Cells(3,6).value = " 在庫 "; // データの書き出し data=[ ["13770"," 電動式 鉛筆削り " ," PLUS "," 鉛筆削り ","4194","25" ] , ["15498"," 手動鉛筆削り FS-150 ブルー "," PLUS "," 鉛筆削り ","998" ,"3" ] , ["20630"," 手動鉛筆削り FS-150 イエロー "," PLUS "," 鉛筆削り ","998" ,"14" ] ] for(var i=0 ; i < data.length ; i++){ for(var j=0 ; j < data[i].length ; j++){ sheet.Cells(4+i ,1+j).value = data[i][j] ]]> </script> </job>
WSFサンプル・その2 Excelを作成後、PDF作成 WSF 1.新規ExcelをOpen 2.タイトル・セル枠などを設定 3.データを書き出し ---------------------------- 4.PDFを作成
WSFサンプル・その2-1 Excel作成 http://・・・・/iweb/WSF005A.WSF <?xml version="1.0" encoding="shift_jis"?> <job> <script src="http://www1.axel.ne.jp/iws/js/commonWSF.js"></script> <script> <![CDATA[ // Excel 操作 --------------------------------------------------------- var ExcelApp = new ActiveXObject( "Excel.Application" ); // Excel オブジェクトを取得 (Excel の起動 ) ExcelApp.Visible = true; // Excel アプリケーションを表示 var book = ExcelApp.Workbooks.Add(); // 新しいブックを追加 var sheet = book.Worksheets( 1 ); // 1 シート目のシートオブジェクトを取得 ・ 【同じ処理】 //============================================================================= // PDFの作成 outfile="C:\\Users\\ohtsuki\\Desktop\\aaaaa.pdf" sheet.PageSetup.Orientation = xlPortRait // 印刷方向設定 sheet.PageSetup.Orientation = xlLandscape // 印刷方向設定 book.ExportAsFixedFormat(0, outfile, 0, true, false,1 ,999 ,true) // PDF作成 ]]> </script> </job>
WSFサンプル・その3 HTMLからExcelを作成 WSF <table border=1 style=border-collapse:collapse;> <tr><th class=hdr> 品目 <th class=hdr> 品名 <th class=hdr> メーカー <th class=hdr> 品種 <th class=hdr> 単価 <th class=hdr> 在庫 <tr><td x:str>013770<td> 電動式 鉛筆削り <td> PLUS <td> 鉛筆削り <td>4194<td>25 <tr><td x:str>015498<td> 手動鉛筆削り FS-150 ブルー <td> PLUS <td> 鉛筆削り <td>998 <td>3 <tr><td x:str>020630<td> 手動鉛筆削り FS-150 イエロー <td> PLUS <td> 鉛筆削り <td>998 <td>14 </table> </html> 1.WSF内のテキスト文 (resourceData)を 変数(htmlData)に読み込む 2.一度ファイル(html.XLS) に書き出す 3.同じファイルをExcelとして開く
WSFサンプル・その3-1 Excel作成 http://・・・・/iweb/WSF040.WSF <?xml version="1.0" encoding="shift_jis"?> <!-- ************************************************************************ --> <!-- HTML ストリングから、 テキストファイル を作成し、さらにExcelとして読み込む --> <job> <?job debug="true"?> <script src="http://www1.axel.ne.jp/iws/js/commonWSF.js"></script> <script> <![CDATA[ //=== ユーザー名の取得 ================================= objNet = WScript.CreateObject("WScript.Network") userName = objNet.UserName //== ユーザー名取得 //=== HTML (resource) をファイルに書き出し ========= htmlPath = "C:\\Users\\" + userName + "\\Desktop\\html.XLS" //== 出力ファイル名 htmlData = getResource( "resourceData" ) fso = WScript.CreateObject("Scripting.FileSystemObject") //==FileSystemObject を生成 htmlStream=fso.CreateTextFile( htmlPath ) //==TextFile 作成 htmlStream.Write(htmlData) //==HTML を書き出し htmlStream.close() //=== Excel を開く ===================================== var ExcelApp = new ActiveXObject( "Excel.Application" ); // Excel オブジェクトを取得 (Excel の起動 ) ExcelApp.Visible = true; // Excel アプリケーションを表示 var book = ExcelApp.Workbooks.Open( htmlPath ); // 既存のブックを開く ]]> </script>
WSFサンプル・その3-2 <!--- Excel作成用HTML --------------------------------------> <resource id="resourceData"> <![CDATA[ <!--- ここ以降が、Excelとして出力される ----------------------> <html xmlns:x="urn:schemas-microsoft-com:office:excel"> <style> .hdr {background-color:#dddddd;} </style> <table border=1 style=border-collapse:collapse;> <tr><th class=hdr> 品目 <th class=hdr> 品名 <th class=hdr> メーカー <th class=hdr> 品種 <th class=hdr> 単価 <th class=hdr> 在庫 <tr><td x:str>013770<td> 電動式 鉛筆削り <td> PLUS <td> 鉛筆削り <td>4194<td>25 <tr><td x:str>015498<td> 手動鉛筆削り FS-150 ブルー <td> PLUS <td> 鉛筆削り <td>998 <td>3 <tr><td x:str>020630<td> 手動鉛筆削り FS-150 イエロー <td> PLUS <td> 鉛筆削り <td>998 <td>14 </table> </html> <!--- ここ以前が、Excelとして出力される ----------------------> ]]> </resource> <!-------------------------------------------------------------------> </job>
WSFサンプル・その4 動的HTMLからExcelを作成 WSF 1.サーバーからExcel用データを 変数(htmlData)に読み込む 2.一度ファイル(html.XLS) に書き出す 3.同じファイルをExcelとして開く 4.開いたExcelからPDF作成 データベース
WSFサンプル・その4-1 Excel作成 http://・・・・/iweb/WSF041.WSF <?xml version="1.0" encoding="shift_jis"?> <!-- ************************************************************************ --> <!-- HTML ストリングから、 テキストファイル を作成し、さらにExcelとして読み込む --> <job> <?job debug="true"?> <script src="http://www1.axel.ne.jp/iws/js/commonWSF.js"></script> <script> <![CDATA[ //=== ユーザー名の取得 ================================= objNet = WScript.CreateObject("WScript.Network") userName = objNet.UserName //== ユーザー名取得 //=== HTMLをファイルに書き出し ========= htmlPath = "C:\\Users\\" + userName + "\\Desktop\\html.XLS" //== 出力ファイル名 url = "http://www1.axel.ne.jp/iwrpg5/xgetrcds.pgm" + "?USER=AXEL&PWD=XXXX&FILE=WEB5/SYOHIN&FMT=TABLE" htmlData = httpRequest(url) fso = WScript.CreateObject("Scripting.FileSystemObject") //==FileSystemObject を生成 htmlStream=fso.CreateTextFile( htmlPath ) //==TextFile 作成 htmlStream.Write(htmlData) //==HTML を書き出し htmlStream.close()
WSFサンプル・その4-2 Excel作成 http://・・・・/iweb/WSF041.WSF var ExcelApp = new ActiveXObject( "Excel.Application" ); // Excel オブジェクトを取得 (Excel の起動 ExcelApp.Visible = true; // Excel アプリケーションを表示 var book = ExcelApp.Workbooks.Open( htmlPath ); // 既存のブックを開く var sheet = book.Worksheets( 1 ); // 1 シート目のシートオブジェクトを取得 sheet.Range("1:2").Insert() // シート見出し用行挿入 sheet.Cells(1,4).value=" 商品一覧 " // シート見出し設定 sheet.Cells(1,4).Font.Size = "22" // シート見出し文字サイズ //============================================================================= // PDFの作成 outfile="C:\\Users\\ohtsuki\\Desktop\\aaaaa.pdf" sheet.PageSetup.Orientation = xlPortRait // 印刷方向設定 sheet.PageSetup.Orientation = xlLandscape // 印刷方向設定 book.ExportAsFixedFormat(0, outfile, 0, true, false,1 ,999 ,true) // PDF作成 //=== Excel を閉じる =================================== book.Close( false ); // ブックを閉じる ( 保存しない ) ExcelApp.Quit(); // Excel を終了 ExcelApp = null; // オブジェクトを解放 ]]> </script> <!-------------------------------------------------------------------> </job>
STRWEBコマンド ■5250画面からURL呼び出し
STRWEBコマンドで、WSFを呼び出し ■5250画面からURL呼び出し
WSF活用の例 ■Dosコマンドを実行する ■ExcelからCSVファイルを作成する ■CSVファイルを開き、Excelで保管する ■Excelから、直接アップロード ■MACアドレスを取得する ■通常使うプリンターを変更する ■IEを開く ■ペイントを開く ■メールを送信する ■5250を操作する
STRWEBコマンドで、GoogleMapを呼び出し ■5250画面からURL呼び出し
STRWEBコマンドで、GoogleMapを呼び出し ■5250画面からURL呼び出し
株式会社 アクセル