書店で前から気になっていた書籍を購入した。
仕事がはかどるJavaScript活用術─Word/Excelで自動処理して効率アップ
- 作者: クジラ飛行机
- 出版社/メーカー: 日経BP社
- 発売日: 2014/09/20
- メディア: 単行本
- この商品を含むブログ (1件) を見る
Windowsは「Windows Scriptng Host(WSH)」という仕組みでスクリプト言語から操作できる。どちらかといえばVBScriptで対応するほうが多いが、JavaScriptで書くこともできる。
これまでVBAでIE操作したり、自分のWebサイトで共通メニューを表示させたりするのにJavaScriptを使用したことがあるが、私はWeb開発者ではないので普段は専らVBAかVBSを作成している。
JavaScriptも使わないと忘れてしまうし、きちんと学ぶにはやはり「普段使い」が重要かと思って、日々の業務で使えそうなWSHをあえてJavaScriptで書いてみようと思ったというのが購入の経緯である。
なお、この書籍はJavaScriptの基本の部分は申し訳程度にしか書かれていないので、他言語でひととおりプログラムを触った人向けかと思う。
さて、読み進めているうちに、VBScriptとはずいぶん違うなと感じた。
まず次のVBSプログラム。
Dim a a = 10 WScript.Echo(a)
JavaScriptなら変数宣言と代入を一度に済ませられる。
var a = 10;
WScript.echo(a);
また、VBSではWSCRIPTと書いても、wscriptと書いても同じように実行できるのに対し、JavaScriptではWScriptときちんと定められた形で書かないとエラーになる。
次に配列を見てみよう。VBSでは単純に変数名に丸カッコを付けて宣言する。
Dim a(5) a(0) = 10 Wscript.Echo(a(0))
JavaScriptでは配列はArrayオブジェクトとして定義されているので、インスタンス化するためのnewが必要になる。
見た目にも、添え字を囲うのに角カッコが使われている点が異なる。この辺はCの血筋である。
var a = new Array(); a[0] = 10; WScript.echo(a[0]);
次にFor Each文の挙動を見てみる。
以下のプログラムは、aの中身を順に出力する。
Dim a(5), x a(0) = 10 a(1) = 11 a(2) = 12 a(3) = 13 a(4) = 14 a(5) = 15 For Each x In a Wscript.Echo(x) Next
同じようにJavaScriptで書いてみると、
var a = new Array(); a[0] = 10; a[1] = 11; a[2] = 12; a[3] = 13; a[4] = 14; a[5] = 15; for (var x in a) { WScript.echo(x); }
なんとこちらは0~5が出力される。
xに入るのはaの中身ではなく、添え字なのだ。
aの中身を出したかったら、WScript.echo(a[x]);と書かなければいけない。
と思ったらfor each文は別であるようだ。しかし配列には使用できず、最新の企画ではfor eachは廃止され、for of文なるものが存在するとのこと。ただWSHで使用されているJavaScript(JScript)では使えるのかどうか不明。とりあえず配列に対して試してみたが、私の環境ではうまく動かなかった。
developer.mozilla.org
とまぁ、使える文法や機能にも色々と違いがあるので、これはこれで面白い。
しばらく家で遊んでみて、仕事で使えそうなら、個人的な作業用スクリプトはJavaScriptで書いてみようかと思う。