では、スクリプトを実際に書いて動かしてみることにしましょう。スクリプトエディタでは、デフォルトで以下のようなものが書かれています。
function myFunction() {
}
見ればわかるように、これは「
myFounction」という名前の関数の定義です。
Google Apps Scriptでは、スクリプトは「関数として定義する」のが基本です。ここに必要な処理を書いて実行すればいいわけですね。では、ごく単純なサンプルを書いてみましょう。
function myFunction() {
alert("こんにちは!");
}
真ん中に1文を追記しただけです。おなじみの
alert関数ですね。では、これで実行してみましょう。作成した関数の実行は、<実行>メニューから行えます。このメニューには、現在定義されている関数が一覧で表示されるようになっています。ここから、<myFunction>メニューを選べば、作った関数が実行できるわけですね。
この他、メニューの下にあるツールバーにある「実行する関数を選択」ポップアップから「myFunction」を選択しておけば、その左側にある実行ボタン(三角の、ビデオのプレイボタンみたいなアイコンのやつ)をクリックするだけで実行させることもできます。ちなみに、そのとなりのハエのアイコンは「デバッグモードで実行」です。
さて、実行するとどうなったでしょうか。やってみると、アラートは表示されず、代りにウインドウ上部に以下のようなメッセージが表示されます。
ReferenceError: 「alert」が定義されていません。 (行 2)Dismiss
alertが定義されていない? だってWebブラウザに組み込み済みの関数でしょ? 一体、どうなってるの? と?マークがぐるぐる頭の周りを回ったことと思いますが、これが
Google Apps Scriptのスクリプトを書くときに最初にぶち当たる壁です。
Google Apps Scriptでは、「Webブラウザに用意されているJavaScriptの機能」は一切使えません。
alertもなし。
windowも、
navigatorも、
document.getElementByIdも全部ありません。一体どうなってるんだ?と思ったでしょう。が、それは
Google Apps Scriptというものを「勘違い」しているからです。
Google Apps Scriptは、JavaScriptのスクリプトです。JavaScriptというのは、普通、Webブラウザというクライアント環境の中で動くもので、Webブラウザやそこに表示されているドキュメントの内容をDOMで操作するのに用います。そこで、思うわけです。「じゃあ、
Google Apps ScriptもWebブラウザの中で動いているんだろう」と。が、実はこれが大きな間違いなのです。
Google Apps Scriptは、クライアント(Webブラウザ)の中で実行されるものではありません。スクリプトは、すべて「
サーバー」で実行されるのです。エディタで書いたスクリプトは、そのままサーバーに送信され保管されます。そして実行する際には、サーバーに保管されたスクリプトが、サーバーの中で実行されるのです。
もちろん、必要に応じてそこからクライアント側(つまりWebブラウザ)にAjax通信でやり取りを行い、表示を操作したりすることもできます。が、「基本はサーバーサイド」です。クライアント側の機能は一切使えません。この点をまずはしっかり頭に入れておいてください。