見出し画像

プログラミングを勉強します69日目:200605

前回までの振り返り
■前回の外部設計
https://note.com/daichan_dream/n/n09f74decd548
■前回の内部設計
https://note.com/daichan_dream/n/n09f74decd548
■アウトプットイメージ
https://note.com/daichan_dream/n/n2ab044382c9b

前回は下記サイトで学び直し18日目でした。
■『いろいろな繰り返し処理』
https://excel-ubara.com/apps_script1/GAS019.html
ということで、 while文、break、continueを学びました。

今日はtry Catchに関して学びます。
課題はエラーをまず意図して起こしてみるところからです。

function sample20_1() {
 var sh = SpreadsheetApp.getActiveSpreadsheet();
 var sname = Browser.inputBox("シート名を入力");
 var sheet = sh.getSheetByName(sname)
 sheet.getRange(1, 1).setValue("ここでエラーが出る可能性がある");
}

var sh = SpreadsheetApp.getActiveSpreadsheet()
//選択しているスプレットシートを取得しますとshで定義しています。
var sname = Browser.inputBox("シート名を入力") 
//入力ボックスを表示するようにsnameで定義しています。
var sheet = sh.getSheetByName(sname)
//入力ボックスで入力されたシート名を取得してアクティブな
 シートしてとして選択する。
sheet.getRange(1, 1).setValue("ここでエラーが出る可能性がある")
//選択されたシートのA1に"ここでエラーが出る可能性がある"と入力する。

キャプチャ

上記のように入力欄が出てきます。そこに試しに存在しない
シート名を入れるとスクリプトエディタでは下記のように表示されます。

キャプチャ

行278とはsheet.getRange(1, 1).setValue("ここでエラーが出る可能性がある")
のことなのですが1つ前のvar sheet = sh.getSheetByName(sname)で
存在しないシート名なのでシートを選択できないです。
そのためエラーになっています。

そこでエラーに対処するために、try catchを入れます。
try {
 try_statements
}
[catch (exception_var) {
 catch_statements
}]
[finally {
 finally_statements
}]

try_statementsは実行される処理
catch (exception_var)は条件満たしたらcatch_statementsの内容を実行する
catch_statementsはcatch (exception_var)で条件を満たしたものに関して
        実行する内容
finally_statementsはtryが完了した後に実行する文

形式に3つある。
try...catch
try...finally
try...catch...finally
どれのかを設定するようにすればいい。

先述のシート名がないものを入力した場合の処理は下記になります。

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 {
var sheet = sh.getSheetByName(sname);
//入力ボックスに入力されたシート名を選択する。
sheet.getRange(1, 1).setValue("ここでエラーが出る可能性がある");
//入力されたシート名のA1に"ここでエラーが出る可能性がある"を入力する
 }
catch (e) {
Browser.msgBox("多分シートが無い");
//エラーが探知されたら、"多分シートが無い"と表示する。
}

エラー時に表示されるのは上記のようなものになります。

明日は配列に関して学んでいきます。
https://excel-ubara.com/apps_script1/GAS021.html

いいなと思ったら応援しよう!