第20回.エラー処理(try・・・catch)
Google Apps Scriptでは、他の言語(VBA等)で、どうしても発生する事の多い、データ型のエラーが発生しません。
とはいえ、全くエラーが出ないという事でもありません。
文字列に四則演算をしても、0で割り算しても、エラーでは止まりまませんので、
表計算では、まずエラーでは止まりません。
その仕様が良いかどうかは別問題ですけど。
通常は正しく動いているが、何らかの条件下で、エラーストップしてしまうような場合の事です。
書き間違いによるエラーが正しく診断できなくなってしまうからです。
入力値や、操作手順により、エラーが出てしまう時に、エラーによるストップを避けるようにして下さい。
エラー処理(try・・・catch)の例題
function sample20_1() {
var sh = SpreadsheetApp.getActiveSpreadsheet();
var sname = Browser.inputBox("シート名を入力");
var sheet = sh.getSheetByName(sname)
sheet.getRange(1, 1).setValue("ここでエラーが出る可能性がある");
}
単純に書くと、こんな感じになります。
しかし、入力したシート名が存在しない時、
ここでは、エラーのサンプルとして、あえてそのような処理を記述していません。
try・・・catch
try_statements
}
[catch (exception_var) {
catch_statements
}]
[finally {
finally_statements
}]
これらの文は、例外が投げられたり捕捉されたかどうかに関係なく実行されます。
すなわち、try 文には 3 つの形式があります:
try...finally
try...catch...finally
finally節は、tryブロックおよびcatch節が実行された後、try文の次の文の前に実行されます。
これは、例外が発生したかどうかに関係なく、常に実行されます。
使い方自体は、そんなに難しくはなくて、
try...catch
とりあえずは、これだけ使えれば問題ないでしょう。
try・・・catchでエラー処理を入れたスクリプト
function sample20_2() {
var sh = SpreadsheetApp.getActiveSpreadsheet();
var sname = Browser.inputBox("シート名を入力");
try {
var sheet = sh.getSheetByName(sname);
sheet.getRange(1, 1).setValue("ここでエラーが出る可能性がある");
}
catch (e) {
Browser.msgBox("多分シートが無い");
}
}
エラーが発生しそうな文を、tryのブロック内に入れます。
そして、catchで、エラー発生時の処理を書きます。
入力したシートがなければ、メッセージボックスに、"多分シートが無い"
と表示されます。
tryブロックに含めるステートメントの範囲
多くの場合、
あちこちに可能性があって、どことは限定できない・・・
ただし、そのような場合は、エラー発生時にエラー原因を特定できなくなりますので、
その対策は、別途考えておく必要があります。
エラー処理の最後に
Google Apps Scriptでは、データ型のエラーが発生しませんので、
このような、エラー処理を入れる必要はあまりありません。
今回の例なら、入力されたシート名の存在を確認するコードを入れるという事です。
本来あるはずのシートが消えてしまった等の人為ミスまで含めれば、必ずエラーは出ます。
そのような、人為ミスのエラーを考慮してまで、スクリプトを書く必要があるかと言うと・・・
ただし、エラー処理を入れたところで、全ての問題が解決するわけでもありません。
エラーが出たときに、その後の対処をどうするかを決めておかなければ、何も問題が解決しません。
前述の例なら、シートを復活させるしかないことは、説明の必要が無いでしょう。
同じテーマ「Google Apps Script入門」の記事
第21回.配列って何なんだ?
新着記事NEW ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門
- ホーム
- その他
- Google Apps Script入門
- エラー処理(try・・・catch)
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。