Google公式User Guide勝手翻訳 

割り当て

Google Apps スクリプトによってなされる様々なアクションに対してそれぞれ制限が課せられている。例えば、スクリプトが送れるメールの制限に引っ掛かるかも知れない。
もしスクリプトが割り当て制限に達したなら、次と同様のメッセージが表示される。


Service invoked too many times: email (サービスが呼ばれすぎです:email

制限は、コンシューマ、ドメイン、プレミアアカウントによって異なる。割当量は特に断りもなくGoogleによって変えられることがある

もし制限量に達して、割当量を増やすだけの正当な理由があると信じるなら、 Google Apps Script Help Forumここから、Google Apps スクリプトチームに連絡して下さい。チームはあなたの状況を調べ、連絡します。


エラーメッセージの解釈

Google Apps スクリプトが実行できない時、たいていエラーメッセージが表示されることと思う。全てのエラーメッセージはエラーが起こった行と、簡潔な説明を含んでいる。ほとんどの場合、エラーメッセージは簡単に理解できて、スクリプトの特定のエラーを参照している。

例えば、スプレッドシートにカスタムメニューとメニューアイテムを追加するサンプルスクリプト想定すると:

function onOpen() {
 
var ss = SpreadsheetApp.getActiveSpreadsheet();
 
var menuEntries = [ {name: "Surprise 1", functionName: "menuItem1"},
                     
{name: "Surprise 2", functionName: "menuItem2"} ];
  ss
.addMenu("Surprises", menuEntries);
}

function menuItem1() {
 
Browser.msgBox("You clicked Surprise 1 on the menu!");
}

function menuItem2() {
 
Browser.msgBox("Surprise! Surprise!")

}

もしスクリプトが、メニューに表示されるアイテムを決める前に、メニューを定義しまったなら、何が起こるだろうか?最初の関数は、次のようになる:

function onOpen() {
 
var ss = SpreadsheetApp.getActiveSpreadsheet();
  ss
.addMenu("Surprises", menuEntries);
 
var menuEntries = [ {name: "Surprise 1", functionName: "menuItem1"},
                     
{name: "Surprise 2", functionName: "menuItem2"} ];
 
}

次にスプレッドシートを開くときに、新しいメニューSurpriseは二度と表示されない。もしスクリプトエディタを開いて、run>onOpenをクリックすると、次のエラーメッセージが表示される

Cannot find method addMenu(string,Undefined). (#3)

後ろのナンバーは、Google Appsスクリプトが間違いを見つけた行の番号である。スクリプトは、メソッドaddMenuを実行できない。なぜなら、メソッドは二つの引数が必要で、それにもかかわらず、二番目の引数menuEntriesが4番目の行まで定義されていないからである。このような理由からss.addMenu("Surprises", menuEntries);menuEntriesより後に来なければならない。

大抵のエラーメッセージは簡単に理解できる。いくつかのエラーは次のように、より一般的なエラーメッセージを出す。


Server not available.

もしくは

Server error occurred, please try again.

Googleのサーバーが利用不可になることは、起こり難い。もしこのようなメッセージが出たら、数分待ってから、スクリプトを実行することが出来る。もし同じエラーメッセージがが出たら、おそらくスクリプトのどこかにエラーがあるというだが、一致したり、特定できるエラーメッセージではないということで、オールマイティなエラーメッセージが表示されているという事になる。この時点で、スクリプトをデバッグしよう。このようなエラーをここGoogle Apps Script Help Forumで報告することも出来る



デバッグ戦略

全ての間違いが、Google Apps スクリプトによって、エラーメッセージを表示するとは限らない。微妙なエラー、例えばコードは構文的に正しくて、実行可能だが、間違った値を送ったり、間違った値を読み込んだりすることなどである。このような場合、スクリプトは実行される、しかし結果は予測したような物にはならない。このような場合に対処するもしくは、詳細に調査する戦略を次に示す。


実行トランスクリプトを見る

スクリプトを実行するといつも、Google Appsスクリプトは実行のトランスクリプトを記録する。実行のトランスクリプトはスクリプトが実行される時、実行するそれぞれのメソッドの記録である。


実行トランスクリプトを見るには

  1. スクリプトエディタからスクリプトを実行
  2. スクリプトエディタで 表示>実行トランスクリプト をクリック。スクリプトが実行された後に、 次が表示される Execution transcript
例えば、スクリプトエディタからカスタムメニュースクリプトを実行し、実行トランスクリプトを見ると、スクリプトが正しく実行されたなら、実行トランスクリプトウィンドウに次が表示される

SpreadsheetApp.getActiveSpreadsheet() 
Spreadsheet.addMenu([Surprises, [])

Interpreting Error Messages ここにあるようなエラーをスクリプトに導入してみると、トランスクリプトは次のように表示する:

SpreadsheetApp.getActiveSpreadsheet()

これが示すのは、最後に正しく実行されたメソッドは、getActiveSpreadsheetであるということで、エラーはこの後に存在するに違いないということである。


ログメッセージの作成と閲覧

Google Apps スクリプトでは、ログメッセージを作製して閲覧することが出来ます。ログメッセージとはスクリプトがどう動くのか、知るために便利な情報を記録するログファイルの項目のことである。例えば、プログラムの処理において、変数の値を変えた時にログを残したとすると、スクリプトが正しい値を変数に所持しているかどうかを確かめるために、ログを使うことが出来ます。


クラスLoggerとメソッドlogを、ログメッセージを作成するのに使います。

株価 スクリプトには以下のようなログのためのコードが加えてある:

Logger.log("Updating symbol: " + symbol);

スクリプトを実行して、スクリプトエディタ>表示>ログをクリックすると、次のような感じで表示される:

Updating symbol: goog 
Updating symbol: emc 
Updating symbol: aapl 
Updating symbol: ibm 
Updating symbol: siri 
Updating symbol: msft

もっと複雑なログの例は、getContactGroupsメソッドのContactsAppクラスのコード例のなかにある:
var groups = ContactsApp.getContactGroups();
for (var i in groups)
  Logger.log (groups[i].getGroupName());

この例では、グループの配列を繰り返し、ログメッセージとして、それぞれのグループ名を記録するために、カウンター i を使っている。

その他のトラブルシューティング戦略

スクリプトの中のどのコードが問題を起こしているのか特定したい時、次の方法が役に立つかもしれない。

何行かコードをコメントアウトしてみる。それによって、どの命令がトラブルに関わっていてどれが関わってないか調べてみる。例えばメッセージを表示するだけのコードならコメントアウトしても問題ないが、何らかの計算をしているコードなら、そうはならないかもしれない。


出力結果が予測できるデータを使ってプログラムを動かしてみる。例えば、スクリプトが計算を目的とするなら、前もって結果がわかってるデータを使ってみて、公式や計算が正しいかどうか確かめてみる。もしスクリプトが正しい答えを出さないなら、コードに論理的なエラーがないかどうか調べてみる。ログメッセージを使って、スクリプトの処理に従って、変数の値を記録してみる。


既知の問題を見る 新たな問題を報告する

Google Apps スクリプトの問題を閲覧することが出来る。そして現在の状況をGoogle Apps Script wiki で閲覧できる。下に示す。

http://code.google.com/p/google-apps-script-issues/.

既知の問題を見るには:

  1. URL http://code.google.com/p/google-apps-script-issues/.に行く
  2. Issuesタブをクリック
  3. 特定の問題を見たいなら、その問題の行のどこかでクリック
新たな問題を報告または、情報の拡張のりクエストは:

  1. URL http://code.google.com/p/google-apps-script-issues/.に行く
  2.  Issues タブをクリック
  3. ベージの左上の,  New Issueをクリック
  4. 要略と、それより長めの詳細を書き入れる事。具体的には、問題を再現するためのステップと期待していた結果、あなたのブラウザ情報、OS情報、それ以外の役立つ情報等。
  5. Submit Issueをクリック

更にヘルプ

もし質問をしたいとか、ある問題に対するヘルプが必要だとか、他のGoogle Appsスクリプトユーザーの質問が見たいならば、 Google Apps Script Help Forumで相談してみるといい。検索してブラウズすることも出来る。もし必要な情報が見つからないならば、他のユーザーもしくは、Google Appsスクリプトチームに質問してみるのもいい。

スクリプトキーの場所

Google Apps スクリプトチームがあなたのスクリプトのどこに問題があるのかを調べる必要があるような場合もあるかもしれない。その時はスクリプトを特定するIDのスクリプトキーの提出をお願いします。スクリプトキーの場所を調べるには、スクリプトエディタを開いて、ファイル > プロジェクトのプロパティをクリック 。スクリプトキーは情報タブにある。