スクリプトは、コマンドの連続で、順番に実行されるものです。[br][br][i]GeoGebra[/i]は[i]GGBスクリプト[/i]と[i]Java[/i][i]スクリプト[/i]という2つのスクリプト言語をサポートしています。スクリプトは、スクリプトを割り当てたいオブジェクトの [img width=16,height=16]https://wiki.geogebra.org/uploads/thumb/3/30/Menu-options.svg/16px-Menu-options.svg.png[/img] [url=https://wiki.geogebra.org/en/Properties_Dialog]設定のダイアログ[/url]の[i]スクリプト記述[/i]タブで入力します。[br][br][b]注意:[/b]スクリプトを実行するには、[i]設定 [/i]パネルを閉じる必要があります。
オブジェクトによってサポートするスクリプトの種類は異なり、スクリプトの実行は次のような方法で実行することができます:[br][list][*]特定のオブジェクトをクリックする ([i]クリックして[/i]タブ)[br][/*][*]オブジェクトの値やプロパティが変更された場合、特定のオブジェクトを更新する([i]最新情報[/i]タブ)[/*][*]入力ボックスの内容が変更されたとき([i]変更時 [/i]タブ)[br][/*][*]オブジェクトをドラッグした後、マウスボタンを離したとき(タッチデバイスの場合は画面から指を離したとき)([i]On Drag-end[/i]タブ)[/*][*]ファイルの読み込み(JavaScriptの場合 - [i]グローバルJavaスクリプト [/i]タブ)[br][/*][*]Javaスクリプトのリスナー(「[url=https://wiki.geogebra.org/en/Reference:JavaScript]資料:Javaスクリプト[/url]」参照)[/*][/list]入力ボックスの[i]OnUpdate[/i]スクリプトと[i]OnChange[/i]スクリプトの違いは、[i]OnUpdate[/i]タブに入力したスクリプトは、入力ボックスからフォーカスが外れたとき(ボタンのクリック、[i]グラフィックビュー[/i]のクリックなど)にだけ実行されますが、[i]OnChange[/i]タブに入力したスクリプトは、入力ボックスの内容が変われば、入力ボックス自体にまだフォーカスされているときでも実行されます。[br][br][b]備考:[br][/b]入力ボックスのOnChangeとOnUpdateスクリプトのデモを確認してください。[br]ドラッグ可能なポイントに対するOnDrag-endスクリプトのデモを確認してください。[br][list][*]入力ボックスの[url=https://www.geogebra.org/m/bek5uqah][i]OnChange[/i]と[i]OnUpdateスクリプト[/i]のデモ[/url]を確認してください。[br][/*][*]ドラッグ可能なポイントに対する[i][/i][url=https://www.geogebra.org/m/kxgvyqvj][i]OnDrag-end[/i]スクリプトのデモ[/url]を確認してください。[/*][/list]
[url=https://wiki.geogebra.org/en/Input_Bar]入力バー[/url]で使っているような[i]GeoGebra[/i]コマンドで構成されたスクリプトを作成することができます。スクリプトを実行すると、すべてのコマンドが、書かれた順番通りに、連続的に実行されます。[br][br][b]例:[/b][br][list=1][*][i][math]a[/math][/i] は [math]1[/math] から [math]3[/math] (増分は [math]1[/math]) の整数値の[url=https://wiki.geogebra.org/en/Slider_Tool]スライダー[/url] [/*][*][code]list1 = {"red", "green", "blue"} を入力します。[/code][/*][*][i][math]a[/math][/i] のプロパティで, "変更時" のスクリプトに [code]SetColor(a, Element(list1, a)) と設定します。[/code][/*][*]スライダーを動かすと,スライダーの色が変わります。[/*][/list][br]スライダーを動かすたびに、更新が発生します。つまり、移動するたびにスクリプトが呼び出され、[math]a[/math]の値を使ってリストから1つの色を選び、スライダーの[math]a[/math]の色を変更します。[br][b][br]注:[/b] コメントは文頭に [math]#[/math] をつけてください。[br][br][b]ヒント:[/b]スクリプトにのみ使用できるコマンドもあります。これらのコマンドの一覧は、[url=https://wiki.geogebra.org/en/Scripting_Commands]Scripting_Commands(英語)[/url]ページを参照してください。
Javaスクリプトは、多くのインターネット技術で使用されているプログラミング言語です。GeoGebra スクリプトとは異なり、Javaスクリプトではコマンドを単純なシーケンスとして実行する必要はなく、制御フロー(if, while, for)を使用することができます。一般的なJavaスクリプトについては、[url=https://developer.mozilla.org/en/JavaScript/Guide]developer.mozilla.org[/url]でわかりやすいチュートリアルを見ることができます。GeoGebraでは、アプレットを変更することができる特別なJavaスクリプトメソッドを使用することができます。これらのメソッドはggbAppletオブジェクトに属しており、ggbApplet. メソッド名(パラメータ,...,パラメータ)としてそれらを呼び出すことが可能です。これらのメソッドの完全なリストについては、[url=https://wiki.geogebra.org/en/Reference:JavaScript]リファレンス:Javaスクリプト(英語)[/url]を参照してください。[br][br][b]例:[/b][br][*][code]for(var i =0;i<10;i++)[br] ggbApplet.evalCommand("A_"+i+"=(random()*10,random()*10)");[/code][/*][br]このスクリプトはランダムな座標の点を10個 [i][math]A0[/math][sub][/sub][/i] 〜 [i][math]A9[/math][sub][/sub][/i] を作成します。[br][br][b]注:[/b]Javaスクリプトによるスクリプトは非常に多機能ですが、よりシンプルな[i]GeoGebraスクリプト[/i]を使用しても多くのタスクが実現できます。
[img width=16,height=16]https://wiki.geogebra.org/uploads/thumb/3/30/Menu-options.svg/16px-Menu-options.svg.png[/img][i]プロパティダイアログ[/i]のスクリプト記述タブにある[i]グローバルJavaスクリプト[/i]では、他のスクリプトから利用可能な[b]関数[/b](変数ではない)を定義することができます。また、[i]ggbOnInit(name, api)[/i]という関数を定義することができ、これはアプレットが読み込まれるとと自動的に呼び出されます。[i]ggbOnInit[/i]関数は、以下のように、いくつかの[i]リスナー[/i]を設定するために使うことができます。[br][br][b]例:[/b][br][code]function onAdd(name){[br] alert("オブジェクト "+name+" が追加されました.");[br]}[br][br]function ggbOnInit(name, api){[br] api.registerAddListener("onAdd");[br]}[br][/code][br][br]最初に関数 [i]onAdd[/i] を定義し、与えられた文字列によってメッセージを表示するようにしました。その後、[i]ggbOnInit[/i] 関数を使って、新しいオブジェクトが追加されるたびにこの関数を呼び出すように [i]GeoGebra [/i]に指示しました。一度アプレットをリロードすると、[i]ggbOnInit[/i]関数が呼び出され、それ以来、ユーザーが例えば A というポイントを追加すると、「オブジェクトAが追加されました.」というメッセージが表示されます。[br][br]また、[i]リスナー[/i]を使用して、アプレットの名前の変更、削除、クリアなどのアクションを行うことができます。詳しいリストは[url=https://wiki.geogebra.org/en/Reference:JavaScript]Reference:JavaScript(英語)[/url]に掲載されています。[br][br][b]注意: [/b]ggbOnInit以外の[i]グローバルJavaスクリプト[/i]でggbAppletのメソッドを使用すると、アプレットがロードされる前に呼び出されるため、意図したとおりに動作しないでしょう。