第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入門」の記事
第17回.JavaScript リファレンス
第18回.組み込み関数を使う
第19回.いろいろな繰り返し処理
第20回.エラー処理(try・・・catch)
第21回.配列って何なんだ?
第22回.オブジェクト、メソッド、プロパティとは
第23回.行・列を操作する(挿入・削除・非表示・サイズ)
第24回.シートの挿入・削除・名前変更
第25回.スプレッドシート(ブック)の作成・名前変更
第26回.セルのコピー&各種ペースト
第27回.セルに数式を入れる
新着記事NEW ・・・新着記事一覧を見る
PropertyのSetはLetでも良い|VBA技術解説(2021-03-31)
エクセル麻雀ミニゲーム|VBAサンプル集(2021-03-09)
VBA100本ノック 100本目:WEBから100本ノックのリストを取得|VBA練習問題(2021-03-03)
VBA100本ノック 魔球編:2桁の最小公倍数|VBA練習問題(2021-02-02)
Select Caseでの短絡評価(ショートサーキット)の使い方|VBA技術解説(2021-01-03)
VBA100本ノック 迷宮編:巡回セル問題|VBA練習問題(2020-12-31)
VBA100本ノック 魔球編:閉領域の塗り潰し|VBA練習問題(2020-12-16)
VBA100本ノック 魔球編:組み合わせ問題|VBA練習問題(2020-12-02)
将棋とプログラミングについて~そこには型がある~|エクセル雑感(2020-11-22)
VBA100本ノック 1本目:セルのコピー|VBA練習問題(2020-10-19)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.Excelショートカットキー一覧|Excelリファレンス
6.繰り返し処理(For Next)|VBA入門
7.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
8.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
9.セルに文字を入れるとは(Range,Value)|VBA入門
10.とにかく書いてみよう(Sub,End Sub)|VBA入門
- ホーム
- その他
- Google Apps Script入門
- エラー処理(try・・・catch)
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。