Google公式の勝手翻訳
スクリプトエディタを使うスクリプトを書いて実行したり、トリガーをセットしたり、また他のアクション、例えばスクリプトを共有するためにスクリプトエディタを使う。 スクリプトエディタをを始めるには既存のスプレッドシートまたはサイトを開くか、新規作成する。 スプレッドシートからスクリプトエディタを開始するには、ツール>スクリプトエディタ グーグルサイトからスクリプトエディタを開始するには
スクリプトエディタの振る舞いは、スクリプトがすでにサイトもしくはスプレッドシート内にあるかどうかで違う。もしスクリプトがサイトかスプレッドシートに存在するなら、スクリプトエディタはそのスクリプトを開く。 もしスプレッドシートまたはサイトにスクリプトがないなら、スクリプトエディタはこのように開く。 (画像略) スクリプトエディタについて中括弧と一緒に関数 myFunction() が宣言されてるのが見て取れるだろう。しかしながら、これは単なるコードである。この関数は実行しようとしない限り、処理が開始されることはない。コードをスクリプトエディタにタイプまたはコピーするか、既存のスクリプトをスクリプトギャラリーからインストールすると、スクリプトエディタはわかりやすいようにカラーで表示する。
スクリプトエディタで次のことが可能
スクリプトを計画するあなたがスクリプトを計画しているとき、擬似コードを先に書くと助けになることに気付こことだろう。擬似コードは、スクリプトが何をする必要があるかを詳細かつ正確に叙述する。いくつの関数がスクリプトに必要なのか、どこにループとカウンターが必要なのか、変数がどこに必要か、どこで異なった計算をするのかを記載するのに擬似コードを使うことができる。ここにストックプライススクリプトの擬似コードを示してみる。 first function runs when Spreadsheet is opened 擬似コードに詳細を書けば書くほど、スクリプトを書くことが容易になることだろう。 更にスクリプトとスプレッドシートについてある固有のスクリプトはただ唯一一つのグーグルスプレッドシートと連携する。もしスプレッドシートのコピーをあなたが作ったなら、スクリプトもコピーされる。 それはスプレッドシートとそのコピー内のスクリプトのスクリプトキーを調べることで確認することができる。 ある固有のスプレッドシートは複数の連携するスクリプトを持つことができる。もし onOpen イベントハンドラーをあるスプレッドシートと連携する一つ以上のスクリプトのなかで使ったら、全てのスクリプトはスプレッドシートを開いた時に処理を始めるが、どの順番でスクリプトが実行されるかは不明瞭である。イベントハンドラーは何かしらのイベントが起こった時に起動される関数である。イベントハンドラーについての完全な情報はRunning Scripts in Response to an Eventを見ること。 スクリプトは今のところ他のスクリプトを生成したり呼び出せないし他のスクリプトの関数を呼び出すこともできない。関数は実行環境のいかなる状態も変えることができない。ではあるがスプレッドシートのセルを改良することによってその振る舞いをシミュレートすることができる。それは関数が実行された後、全ての関数やオブジェクトに蓄えられたデータは消される。もし関数の結果を保持したいなら、スプレッドシートのセルにコピーしなければならない。 更にスクリプトとサイトについてAppsスクリプトイベントをグーグルサイトに埋め込まれたリンクから引き起こすことができる。どうやってやるかはここを見る Using Apps Script in Your Site. サイトにガジェットとして挿入することもできる。更に知りたいならここを見る Embedding Apps Script in Google Sites
スクリプトの開始スプレッドシートかサイトからスクリプトエディタを開くと以下のようになる。 function myFunction() { myFunctionという名前の関数は、あなたが名前をつけるまでの一時的な代用になっている。あなたがスクリプトを書いたら、任意の名前でスクリプト内に関数を割り当てることができる。関数名は、関数が何をするかを示す単語で構成されるのが慣例で、例えばgetStockName みたいな感じになる。関数名は慣例的にキャメルケースでつけられる。最初の単語は小文字で次に続く単語の最初の文字は大文字となる。関数の命令は中括弧で閉じられなければならない。 スクリプトは必要なだけ関数を持つことができる。関数をスクリプトに書くと同時に変数の目的やコードのブロックが何をするのかコメントを含めていく。コメントはスクリプトが何をするのか追いかけたり、将来スクリプトを維持するのを簡単にする。 アンダースコアで終わる関数、例えばinternalStuff_()は他の関数とは違く扱われる。スクリプトエディタの実行フィールドにこれらの関数を見ることはないし、スプレッドシートのスクリプトマネージャにも現れない。アンダースコアはその関数を実行すべきでないとユーザーに示すとともにそれは他の関数へのみ利用可能であることを示すのに使える。 スクリプトをどう実行するかの選択いつどうやってスクリプトが実行されるのかはあなたがコントロールする。スクリプトを書いたとき、以下の方法からスクリプトの実行方法を選ぶ。
Google Apps Script API の使用あなたがGoogle AppsスクリプトAPIを使うのを手助けするために、すこしばかりオブジェクト指向プログラミング言語とそれの働く仕組みについて話そう。それからAPIドキュメントの読み方について話そう。 Google Apps スクリプトはJavaScript 言語を使用してる。Google Appsスクリプトの命令はAPIドキュメントに書かれてるオブジェクトとメソッドによって成し遂げられる。APIとはアプリケーション プログラミング インターフェイスの略である。APIは前もってパッケージされたコードで、あなたがスクリプトやプログラムで達成する必要がある一般的なタスクを供給する。 Google AppsスクリプトAPIはメールを送ったり、カレンダーエントリを作成したり、マップを作成したり、ユーザーインターフェースを作成したり、文章を翻訳したりするようなタスクを達成するためのオブジェクトを含んでる。メソッドはオブジェクトの振る舞いを記述しそしてオブジェクトに付随する関数である。 例えば、Google AppsスクリプトはMailAppというメールを作成し送るという
オブジェクトがある。MailAppには二つのメソッドがある。
MailApp.sendEmail("mikemike@example.com,lisa@example.com,janos@example.com,nikhil@example.com", "Attachment example", "Here is my document", {attachments: myFiles}); 上の命令文は ClassName.methodName(argument1, argument2, argument3....argumentn); 例えば、メッセージボックスrにHello,Worldとポップアップさせるには、BrowserクラスのmsgBoxメソッドを呼び、Hello,Worldを引数として引き渡す。 Browser.msgBox("Hello, World"); Browser.msgBox() は現在Google サイトで利用できないので、代わりにメールで送ることが出来る。 MailApp.sendEmail("you@email.com", "Hello world!", "Sent from Apps Script") またはログにメッセージを追加する。 Logger.log("Hello world!") The Google Apps Scripts API ドキュメントは ここ。左側のスライドバーは全てのサービスと特定のサービスに同伴するオブジェクトのリンクになっている。もしDocsList linkをクリックしたら、オブジェクトとそのメソッドのリストページへ飛ぶ。もしbase class Fileのリンクをクリックしたならそのクラスのメソッドの詳細ページへ飛ぶ。もしテーブルのメソッド名をクリックしたら、メソッドの引数とメソッドから返される値のリストへ飛ぶ。例えば データストレージとデータソースGoogle Apps スクリプトは様々な方法で、色々なフォーマットのデータを引き出したりアクセスすることができる。 スクリプトに値を与える一番簡単な方法はスクリプトが置いてあるサイトもしくはスプレッドシートにデータを入れることである。データをタイプすることが出来る。また以下のフォーマットでスプレッドシートにデータをインポート出来る。
もし他のフォーマットでデータを所有しているならば、上のどれかのフォーマットでエキスポートしてから、Google スプレッドシートにインポート可能かもしれない。 Google Apps スクリプトはXMLデータを扱うことができる。もしXMLのデータ構造を知る必要があるならこちらAPIs for handling XML documents 、tutorial for parsing XML documents カスタム関数の使用カスタム関数とはスプレッドシートのセルから =myFunctionName() 構文を使って直接呼び出す関数のことである。カスタム関数は値を返す。しかしそのセルの外側から値を入れることは出来ない。ほとんどの場合、セルA1のカスタム関数はセルA5の値を変えることは出来ない。しかしながら、もしカスタム関数が二次元配列を返すなら、その結果はセルから溢れ出して下か右のセルを埋める。 return [[1,2],[3,4]]; を含むカスタム関数でテストできる。tutorial on parsing XML dataで解説されているThe Oracle of Bacon スクリプトは二人の俳優名を集める為のカスタム関数を使用している。=kb("actor_name1", "actor_name2") カスタム関数に必要とされてるのはそのセルにデータを与えることだけである。 カスタム関数は他の関数をは共有していない制限がある。
既存のスプレッドシートの公式群との連携あなたがスクリプトを書いたかインストールしたスプレッドシートにはすでに公式が存在してるかもしれない。公式と関数がどうやって実行され相互作用するのかここに示す
あなたのスクリプトの共有スクリプトを共有するにはいくつかの選択がある。
スプレッドシートを共有して他の人にもスクリプトを実行や編集可能にする
スクリプトギャラリーにスクリプトを公開する
スプレッドシートのテンプレートを投稿するには
もし間違いを犯したならあなたのスクリプトにいくらかエラーを見つけることができると思う。 もしコードをタイプしてタイプエラーをしてしまったら、その行のカラーコードは正しくならないままである。例えば次の株価スクリプトのコードの行は正しい。 sheet.getRange(row, 2).setValue(stockInfo.name); スクリプトエディタに正しくこれを入力したら、コードは次のようになる もし間違えて 間違った構文やその他のエラーを含むスクリプトは実行されない。もし構文エラーがある場合、セーブした時か実行した時にエラーメッセージが表示される。 例えば
エラーメッセージは常にスクリプトが実行をストップした行を含む。スクリプトを調べるにはスクリプトエディタでスクリプトを開く。 さらなるエラーメッセージに関する情報やトラブルシューティングは、Troubleshooting and Debugging Scripts Debuggerの使用スクリプトエディタにはdebuggerも含まれる。debuggerはスクリプト実行中に現在の変数やオブジェクトの状態を見ることができるようにしてくれる。一行一行照査実行していくか、又はブレイクポイントを設定してその時点での値を見ることができる。 debuggerは何百何千の行の複雑で長いコードに主に使われる意図で存在する。短いスクリプトなら単にスクリプトを見ていけば変数の値をスキャンして同定できるが、コードや計算が複雑なら短いコードに置いても、debuggerが有効であるかもしれない。 debuggerはカスタム関数はには使えない。onEdit関数、イベントトリガーやサービスとして実行されるスクリプトにも。 debuggerをスタートするには
スクリプトエディタとdebuggerはこんな感じである 構文エラーはAppsスクリプトによって、入力段階か最初に実行する際に捉えられる。debuggerを使うのは構文は正しくてもうまく意図したように働かないという場合のエラーを見つけるためである。構文エラーがあってもdebuggerを開始することはできる。上にあったようにsetValを間違えてタイプした場合、TypeError: Cannot find function setVal in object Rangeとスクリプトエディタのスクリプトの上に表示される。 debuggerを使って見つけることができるエラーの例をここで挙げる。間違った場所で変数を加算したり、加算する量を間違えるかもしれない。そうすると変数の値は正しくないことになる。間違った値を計算で使うとなると、結果は間違ったものになる。そこであなたはをスクリプトのいくつかの地点で変数の値を観察するのにdebuggerをつかうことだろう。これによって、どこで間違った値が変数に代入されたのか見つけることができることだろう。 ログメッセージをを使ってもこれはできるかもしれない、ここに書かれているようにCreating Log Messages and Viewing Logs けどdebuggerを使うほうが更に効率的である。ログを行ったりきたりするようなことなく値をリアルタイムで見ることができる。 ブレイクポイントの設定ブレイクポイントはdebuggerでの値を見るためにコードが処理を行うのを止めたい時に設定するポイントである。ブレイクポイントを設定するには、スクリプトエディタで行番号をクリックするか、debuggerという語句をコードの行に挿入する。ブレイクポイントを削除したい時は行番号を再びクリックするか、debuggerの語句を削除すればいい。ブレイクポイントはdebugger が見える見えないに関わらず設定できる。 ブレイクポイントは好きなだけ設定できる。debuggerを挿入して設定したブレイクポイントはスクリプトと一緒に保存される。行番号をクリックして設定したブレイクポイントは保存されない。 debuggerは条件付きのブレイクポイントは持っていないが、条件付きブレイクポイントの振る舞いに似せたコードを書くことはできる。例えば、debuggerをif else構文に挿入することもできる。この場合は条件が合致した場合のみブレイクポイントが呼び出される。 var x=1 もしdebuggerでほぼ全ての行を止めたいようなとき、一行一行確認していくのはなく、の場合は次のセクションを参考に Debuggerの実行とあなたが見ることの翻訳ブレイクポイントを設定した後、関数の実行を選択し、虫みたいなボタンをクリックしてdebuggerからスクリプトを起動する。 debuggerがまだ表示されていないなら、スクリプトエディタの底に現れる。そして設定した最初のブレイクポイントでストップする。 続けてスクリプトを実行するには、debuggerのプレイボタンをクリックする。 株価スクリプトで試してみよう
thisの隣の+サインをクリックすると追加の情報を見ることができる。それはAppsスクリプトのdebuggerからみえる全てのサービスと全ての使用中のオブジェクトである。たとえば株価スクリプトをデバグしている時stockInfoを見ると、stockInfoが呼ぶことができる全ての情報を見ることができる。スクリプトがなんにも表示しないとしても。 コードをステップで実行するには3つの選択がある
ビューフィルターの使用debuggerはビューフィルターの機能も持っている。継承の表示と全てのデータを表示である。それぞれのボタンをクリックすることで呼び出す。 継承の表示フィルターを理解するには、JavaScriptのオブジェクトとメソッドについてすこし知る必要がある。新たなオブジェクトタイプを作り出すとき、既存の例えばJavaScriptの基礎タイプを土台にして作る。そうすると、新たなオブジェクトはメソッドとプロパティをそれから継承するが、その上でユニークなメソッドとプロパティを追加する。例えば全てのStringオブジェクトはStringからメソッドとプロパティを継承してる。 継承の表示をクリックすると現在のオブジェクトと全てのオブジェクト階層の継承関係を表示する。普通はそんなにオブジェクトについて情報を必要とすることはない。 全ての情報を表示をクリックすると、JavaScript バーチャルマシンで利用可能な全てのスタンダードオブジェクトとメソッドが表示される。 |