質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

エスケープ処理

エスケープ処理とは、一連の文字や一文字に対して、一定の規則に従って別の意味を適用する処理過程です。

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

Q&A

解決済

1回答

287閲覧

スプレッドシートに登録してあるユーザーごとに処理をしている途中、エラーが生じても処理を継続させる方法

zigutabi

総合スコア57

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

エスケープ処理

エスケープ処理とは、一連の文字や一文字に対して、一定の規則に従って別の意味を適用する処理過程です。

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

0グッド

0クリップ

投稿2020/08/04 03:42

現在、スプレッドシートに登録してあるユーザーに一斉送信するためのプログラムを作成しております。
その際、レコードの一部にジャンクデータが混じっていると、それ以前のデータの人にデータが送信され、それ以外の人にはデータが遅れないという問題が生じました。
一応、エラーのある行を取得する処理はできたのですが、エラーのある行を飛ばして進むことができませんでした。
コードは以下のようになります。

Google

1const ss = SpreadsheetApp.getActiveSpreadsheet(); 2const myfunc = function(){ 3 const sh = ss.getActiveSheet(); 4 const rng = sh.getRange(1, 1, sh.getLastRow(), sh.getLastColumn()) 5 const records = rng.getValues(); 6 7 let idx = 2; 8 try{ 9 for(record of records){ 10 // Gmailかチャットワークに送信する独自定義したメソッド、ここでジャンクデータが入ると処理が止まり、catchに入る。 11 orignalFunc(record); 12 idx++; 13 } 14 }catch(e){ 15 Logger.log(idx + "行目のレコードに誤りがあります。"); 16 } 17}

catchに入ったら、その部分を無視してtryに戻るにはどのようにすればよろしいでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

forループ内で try-catch すればいいです。

JavaScript

1const ss = SpreadsheetApp.getActiveSpreadsheet(); 2const myfunc = function () { 3 const sh = ss.getActiveSheet(); 4 const rng = sh.getRange(1, 1, sh.getLastRow(), sh.getLastColumn()); 5 const records = rng.getValues(); 6 7 let idx = 2; 8 for (record of records) { 9 try { 10 // Gmailかチャットワークに送信する独自定義したメソッド、ここでジャンクデータが入ると処理が止まり、catchに入る。 11 orignalFunc(record); 12 } catch (e) { 13 Logger.log(idx + "行目のレコードに誤りがあります。"); 14 } 15 idx++; 16 } 17}; 18

投稿2020/08/04 06:15

draq

総合スコア2573

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zigutabi

2020/08/05 02:27

try{}catch{}構文をfor文の中に入れるのは目から鱗です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問