Google Apps Script:
エラーの処理

方法:

Google Apps ScriptはJavaScriptに基づいているため、エラーハンドリングには従来のtry-catchステートメントを使用できます。成功またはエラーに関わらずクリーンアップが必要な場合はfinallyも使用できます。

function myFunction() {
  try {
    // エラーを投げる可能性のあるコード
    var sheet = SpreadsheetApp.getActiveSheet();
    var data = sheet.getRange("A1").getValue();
    if (data === "") {
      throw new Error("セルA1が空です。");
    }
    Logger.log(data);
  } catch (e) {
    // エラーハンドリングコード
    Logger.log("エラー: " + e.message);
  } finally {
    // エラーが発生したかどうかに関わらず実行されるクリーンアップコード
    Logger.log("関数が完了しました。");
  }
}

エラーなしのサンプル出力:

[セルの値]
関数が完了しました。

エラーありのサンプル出力(A1が空の場合を想定):

エラー: セルA1が空です。
関数が完了しました。

Google Apps Scriptは、Errorオブジェクトを使用してカスタムエラーを投げることや、必要に応じて特定のエラータイプをキャッチすることもサポートしています。しかし、高度なエラーカテゴリゼーションの不在は、特定性のためにエラーメッセージに依存することを必須としています。

ディープダイブ

歴史的に、JavaScript(およびそれに伴うGoogle Apps Script)などのスクリプト言語でのエラーハンドリングは、詳細な例外階層や包括的なデバッグツールなどの機能を提供する一部のコンパイル言語よりも洗練されていないことが多かったです。Google Apps Scriptのモデルは比較的単純で、JavaScriptのtry-catch-finallyパラダイムを利用しています。この単純さは、Googleのエコシステム内で小規模から中規模のアプリケーションを迅速に開発し、展開するための言語の設計と一致していますが、複雑なエラーシナリオに取り組む場合、開発者を制限することがあります。

より複雑なアプリケーションでは、プログラマーはしばしば、Google Apps Scriptのネイティブエラーハンドリングをカスタムログやエラーレポーティングメカニズムで補足します。これには、監査用にGoogleシートにエラーを記述することや、Google Apps ScriptのURLフェッチサービスを通じてエラーの詳細をスクリプト環境外に送信するためのサードパーティログサービスの使用が含まれます。

JavaやC#のような言語と比べて、Google Apps Scriptが組み込みのエラーハンドリングの複雑さや機能面で後れをとるかもしれませんが、Googleサービスとの統合とtry-catch-finallyアプローチの単純さが、開発者にとってGoogleのエコシステム内でタスクを迅速に自動化し、統合を作成するための強力なツールとなります。他の背景を持つ開発者にとっては、複雑なエラーハンドリングパターンをマスターすることではなく、利用可能なものを創造的に活用してスクリプトを堅牢でユーザーフレンドリーにすることに挑戦があるかもしれません。