3

私は、1000 行近くのコードとかなりの量のハンドラーとコールバックを含む Google Apps Script UiApp アプリケーションを作成しました。アプリは正常に動作していましたが、コードが大きくなると、アプリは突然「予期しないエラーが発生しました」というメッセージを大量に受け取りました。アプリの読み込み中にエラー メッセージが断続的に表示されます。アプリを 1 分間試してみると、エラーが発生します。その後、更新するとエラーが消えます。もう一度更新すると、エラーが再び表示される可能性があります。これらは、テスト URL と本番 URL の両方で発生します。

エラーはランダムであるため、特定のコード行までたどることはできません。これを引き起こす可能性のある処理制限はありますか? Google Apps には、行、ウィジェット、またはハンドラに制限がありますか? もしそうなら、それらがこれらのエラーを引き起こしている可能性がありますか?制限を増やす方法はありますか? この問題を追跡するためにできることはありますか?

4

2 に答える 2

1

多くの場合、「予期しないエラーが発生しました」というメッセージは、まだ作成されておらず、アプリに追加されていない要素を処理しようとしているハンドラーに起因します。たとえば、ある関数のコードに非常によく存在する可能性のあるパネルでハンドラーを実行しようとすると、パネルがまだ作成されていない場合に予期しないエラーが発生します。

コード内の操作と関数のフローに従って、関数のどこかに存在する可能性があるが、まだアプリに追加されていない要素で何かを実行しようとしているかどうかを確認します。

さらに、「。forTargets(app.getElementById('myElement'))」を介してIDを持つ要素を処理しようとしている場合は、IDの名前をよく確認してください。名前が間違っていると、そのエラーも発生します。

バグの潰しは、時間がかかり、髪を引っ張る経験になる可能性があります!コードがスパゲッティコードになり始めると、これらのエラーが発生する傾向があります。クリーンアップするには、戻って再設計および再書き込みが必要になる場合があります。

于 2013-01-26T15:48:20.573 に答える
1

はい、Google Apps Script のエンジンには、作成できるコールバックの数、スクリプトの実行に費やすことができる時間など、あらゆる種類の制限があります。私たちの経験では、コードをできるだけ小さく保つ必要があります。可能な限りモジュール化し、時間がかかる可能性があるものをモジュール化します。コードをスプレッドシートと組み合わせて使用​​している場合は、中間ステップの結果を格納するためのコンテナーとしてスプレッドシートを使用し、完了後に相互に呼び出す複数のスクリプトにコードを分割します。コードはより複雑になりますが、より確実に動作します。また、Google Apps Script が設計されていないことをコードが実行している場合は、コードを外部の Google App Engine または別のコンテナに移動します (特にサーバー側の JavaScript が必要な場合)。

于 2013-01-25T19:13:43.463 に答える