web-dev-qa-db-ja.com

Google Apps Scriptからカスタムエラーメッセージをどのように返しますか?

GoogleスプレッドシートからGoogleApps Scriptを実行しているときに、Google APIの1つが正しく使用されていない場合、スプレッドシートの上部に赤い「バターバー」エラーが表示されます。このメッセージには通常、スクリプト開発者に役立つ情報(Google APIからのエラーメッセージ、たとえば「範囲の座標または寸法が無効です。」)が含まれていますが、必ずしもスプレッドシートユーザーには役立ちません(実際の翻訳)。それを解決するために行うことができます)。

iApp apiドキュメント を検索しましたが、このメッセージをカスタマイズする方法が見つかりませんでした。独自のエラーメッセージをスローすることは可能ですか?

15
Ralf Haring

他のJavaScriptと同様に、次のものを使用できます。

try {
  ...
}
catch (error) {
  throw new Error( "More meaningful error." );
{

質問が正確にあなたのものでなくても、これの使用中の 多数の例 があります。

私の個人的な意見では、サービス呼び出しからのエラーをキャッチするのではなく、関数への入力をチェックしてエラーをスローするのが最善です( この回答 など)。 try..catchを使用する適切なタイミングは、 この回答 のように、パラメーターを検証する実用的な方法がない場合です。

29
Mogsdad

スクリプトからエラーメッセージにデータを渡すための最良の方法は次のとおりです。まず、エラー処理に必要なデータを格納するグローバル変数オブジェクトを設定します。次に、このオブジェクトの各関数の_try{}_セクションにデータを格納します。最後に、catch(e)で、エラーデータオブジェクトを渡すerrHandler関数を呼び出します。次のコードを参照してください:_code.gs_。

_var onErrObj = {}
function myFunction(){

 try{
  // function code goes here;
  // add more elements to onErrObj as desired;
 }catch(e){
      onErrObj['data1'] = 'someData';
      onErrObj['data'] = 'some Other Data';
      errHandler(e,'myFunction');
 }

 function errHandler(e,strFunc){
      var message = e.message+'\n in file: '+e.fileName+' on line: '+e.lineNumber;
      var sendto = '[email protected]';
      var subject = 'My App encountered an error occured in '+strFunc;
      var errProps = JSON.stringify(this.onError);
      message = subject+'\n'+message+'\n onError: '+errProps;
      GmailApp.sendEmail(sendto, subject, message); 
}
_
2
user3219703