0

そのため、現在、スプレッドシート内で実行されるアイテムチェックアウトシステムのGUIに取り組んでいます。想定されているすべてのことを実行し、nullを返さないので、通常、結果に非常に満足しています。

ただし、送信ボタンを押すたびに「エラーが発生し、予期しないエラーが発生しました」というメッセージが表示され続けます。その後、残りのコードは期待どおりに実行されます。時々エラーは発生しませんが、ほとんどの場合エラーが発生します。

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [{name: "Equipment Checkout", functionName: "testing"}];
  ss.addMenu("Equipment Checkout", menuEntries);
}

function testing(){
  var app = UiApp.createApplication();
  app.add(app.loadComponent("ImprovedCheckout"));
  var doc = SpreadsheetApp.getActiveSpreadsheet();
  doc.show(app);
}


function submitted(e){
  Browser.msgBox(e.parameter.requestor);
}

これは私のコードの最も単純なバージョンです。私はGUIビルダーを使用してGUIを作成し、それを使用してイベントハンドラーを作成しています。送信(e)の最初の行の前にエラーが発生しているように見えるため、この1時間壁に頭をぶつけてきましたが、実際に送信ボタンをクリックするまで発生しません。毎回発生するわけではありませんが、ほとんどの場合発生します。

ビルダーからのイベントを間違って処理していると思いますが、その機能に関する情報はまだほとんどありません。

4

4 に答える 4

1

同じボタンに2つのハンドラーを設定すると、このエラーが発生するのを見てきました。通常、1つはGUIエディターを介して、もう1つはコード上で使用します。1つは機能し、もう1つは失敗します。これは、エラーをスローし、それでも機能するというこのクレイジーな印象を与えます。

しかし、あなたが言ったので、これはあなたが使用している正確なコードです。GUIビルダーで複数のハンドラーを設定していますか?それが可能かどうかはわかりませんが、GUIビルダーを使用することはありません。

于 2012-05-15T20:01:33.180 に答える
1

理解した!送信ボタンを使用する代わりに、通常の古いボタンに変更しました。送信ボタンが同時に何か他のものを実行しようとしていたようです。

送信ボタンにはいくつかの追加のルールと要件があるようですが、当面は通常のボタンを使用しています。

于 2012-05-16T17:37:55.667 に答える
0

ご提供いただいたコードの実行に問題はありません。重要な2つのこと:

  1. コードで使用しているように、HTML名が「requestor」のコールバック要素をServerHandlerに追加していることを確認してください。
  2. コールバック要素を追加するときは、GUIエディターでIDを使用します。名前!= ID

この例では、名前とIDの両方を設定する必要があります。

于 2012-05-15T19:32:04.597 に答える
0

getElementbyId('id")を使用していて、IDとして間違った値を使用している場合、これと同じエラーメッセージが表示されます。スクリプト自体は実際には停止せず、この特定の呼び出しが実行するはずのアクションを除いて、すべてが正常に見える場合があります(ただし、これは常に「明らか」とは限りません)

于 2012-05-16T11:16:16.697 に答える