(license)みなさん、こんにちは!タカハシ(@ntakahashi0505)です。Scriptはイベントトリガーを設定してタイマーやフォーム送信などをトリガーに自動でスクリプトを動作させることができます。そのようにイベントトリガーを設定しているスクリプトでエラーが起きたらどうなりますか?その場合は、スクリプトは中断してしまいますよね。今回は、以前作成したチャットワークの翻訳チャットを例にエラーが発生したかどうかを判定して、エラーによって処理を分ける方法についてお伝えします。ちなみに、前回は記事はこちら。ScriptとチャットワークAPIを使って翻訳チャットを作る方法です。Google翻訳の機能をGASで扱うtranslateメソッドを使って、まずは最低限のシステムを目指します。tonari-it.com2016.05.08翻訳したい言語のコードと文章をセミコロンでつないだメッセージを「翻訳さん」というグループチャットで送信すると、翻訳語の文章で返信が来るというシステムです。基本的な機能はもう出来上がっているのですが、セミコロンを忘れたり、言語コードを間違えたりなど、うっかりルール外のメッセージを送ってしまうと翻訳の処理でエラーが発生して止まってしまいます。前回作成したスクリプトはこちらでした。//チャットワークにメッセージを送る}}「翻訳さん」のルールではISO639-1で登録されている言語コード(アルファベット2文字)を指定して言語コード;本文という形でチャットワークでメッセージを送るというのがルールです。11行目でその本文をセミコロンで分割してarr[0]:言語コードarr[1]:本文と格納します。12行目でそれをもとに翻訳をするのですが、この時点でエラーが発生するとスクリプトはそこでストップをして処理が先に進まないまま終了してしまいます。チャットワークの向こうでワクワクして待っていても、一生返事は返ってこない...ということになります。今回はその問題を解消すべく、色々と模索をしていきたいと思います。翻訳テスト用スクリプト検証のために、以下のようなテスト用のスクリプトを作成してみました。//翻訳Logger.log(result);}3行目の文字列を色々なパターンに書き換えて実行をすることで、5行目のLanguageApp.translateメソッドの挙動を確認していくためのスクリプトです。strTestで正しい入力が与えられれば、ログ出力に翻訳結果が返ります。上記プログラムの通りstrTestが「ja;翻訳してください」であればこのようにログ出力されます。これを使って色々な文字列を入力してみましょう。セミコロンがない場合strTestにただ「翻訳してください」と入力してみます。この場合は、「無効な引数」でエラーとなりそこで中断します。セミコロンがないのでarr[0]:”翻訳してください”arr[1]:nullとなり、言語コードが不明でエラーとなります。無効な言語コードを使った場合strTestに存在しない言語コードzzを使って「zz:翻訳してください」としてみます。こちらも同様に「無効な引数」エラーです。arr[0]:”zz”arr[1]:”翻訳してください”となっていると思われますが、LanguageApp.translateメソッドではちゃんと言語コードが判定されているわけですね。「en;翻訳してください;翻訳してください」とセミコロンを複数使った場合はどうなるでしょうか。splitメソッドでarr[0]:”en”arr[1]:”翻訳してください”arr[2]:”翻訳してください”と分割されます。arr[2]は使われることがなく、普通にLanguageApp.translateメソッドは成功するわけですね。このパターンは特に問題ないとして良いと思います。「en;」と本文を何も入力しない場合はとこのように空の文字が返ってきます。arr[0]:”en”arr[1]:nullは、エラーとならないようですね。エラーを判定して処理を分けるLanguageApp.translateメソッドでエラーが発生するかどうかの判定はどのようにすれば良いでしょうか?言語コードのリストをスプレッドシートに置いておいて、arr[0]の値がそこに含まれているかどうかを判定するという方法もあります。言語コードは184ありますし、他の翻訳を使うスクリプトを使う場合に毎回スプレッドシートを用意するのも...ちょっとだるいですね。今回はLanguageApp.translateメソッドでエラーが発生するかどうかを直接キャッチしてしまう、という方法を使いたいと思います。try~catch文を使ってエラーの発生を検知するJavaScriptではエラーの発生をキャッチするtry~catch文というものが用意されています。処理2}処理の流れを説明しますね。上記でいうと処理1の部分ですね。}内の処理2は実行されずにスルーされます。}内の処理2が実行をされます。ちなみに、引数eですがErrorオブジェクトつまりエラーの内容が渡されます。エラーの内容から処理を分けていきたい場合などに使えばOKです。try~catch文を使った翻訳テスト用スクリプトではこのtry~catch文を使って翻訳テスト用のスクリプトを組んでみましょう。e;}Logger.log(result);}LanguageApp.translateメソッドが検証の対象になっていて、エラーが発生すればログにエラーの内容が出力されます。エラーがなければ、catchの中は実行されませんので翻訳結果が出力されます。Scriptでエラーが発生したときに、try~catch文で処理を分ける方法についてお伝えしました。次回はこの方法を用いて、チャットワークの翻訳チャットにルール外のメッセージが来たときの処理を作成していきたいと思います。Scriptでチャットワーク上に翻訳チャットを作成しています。今回は翻訳チャットのスクリプトに例外のメッセージによるエラーが発生した場合の処理を搭載していきます。tonari-it.com2016.05.28どうぞお楽しみに!連載目次:GASとチャットワークAPIで翻訳チャットを作るおみくじチャットの仕組みを利用して翻訳チャットを作ります。ScirptでGoogle翻訳を操作する方法、チャットからの入力がルール外だった場合のエラー処理など少し発展的な内容を学ぶことができますよ。プランノーツ代表、コミュニティ「ノンプロ研」主宰。ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ★フォロー頂ければ嬉しいです。「コミュニティ+講座」形式で継続性&教え合える環境も提供。!ノンプログラマーがプログラミングスキルを身に着ける支援ををするコミュニティ。セミナー・もくもく会・Facebookグループのサポートで「自らで学び続ける力をつける」支援、「教え合うことで学びの価値を上げる」場の提供をしています。Scriptでチャットワーク上に翻訳チャットを作成しています。今回は翻訳チャットのスクリプトに例外のメッセージによるエラーが発生した場合の処理を搭載していきます。Scriptでサイドバーを作る方法をシリーズでお伝えしています。今回はラベル、ボタン、テキストエリアといったGASでサイドバーを作るときに使用するいくつかのフォーム部品の作り方をお伝えします。ScriptでTrelloをAPIで操作する方法を解説します。今回は認証に必要なkeyとtokenを取得する方法と、取得したkeyとtokenをつかってボードIDを取得する方法をお伝えします。ScriptGASでGoogleフォームに記述式の質問を追加する方法GASでGoogleフォームを作成する方法についてお伝えしています。今回は、GASで作成するフォームに、addTextItemメソッドを使って氏名や会社名などの記述式の質問を追加していきます。作りましたので、その方法についてお伝えします。Scriptのクラス」をテーマにお送りしております。今回は、GASでスプレッドシートのデータの集合を表すクラスを作成する方法をお伝えしていきます。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Platform23HTML・CSS32iPhone・アプリ29Monaca・スマホアプリ開発7PC全般・Windows86PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント109セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。「コミュニティ+講座」形式で継続性&教え合える環境も提供。詳細・お申込はこちら隣ITを応援する当ブログを「応援したい!」「役に立ったよ!」というお気持ちを、コチラからお支払いただくことができます。日々更新の活力倍増いたします。※PayPalアカウントが必要です。※金額は変更可能です。Platform23HTML・CSS32iPhone・アプリ29Monaca・スマホアプリ開発7PC全般・Windows86PowerPoint・VBA28Python87RPA1VBScript15Vue.js・JavaScript13WEBサービス・クラウド68WordPress・ブログ88Word・VBA42コミュニティ・イベント109セミナーのお知らせ11チャットワーク72データ分析・アクセス解析40仕事・生産性・働き方73動画配信8商業出版21起業・フリーランス72電子書籍・Kindle3運営会社プランノーツは"IT×働き方改革"をお手伝いする会社です。Scriptが「V8ランタイム」をサポート!モダンなECMAScript構文が使えるようになった2020.02.072020.02.08GASでコピーしたGoogleスライドのプレゼンテーションを取得する方法2020.02.052020.02.05Facebookページいつも隣にitのお仕事タイトルとURLをコピーしました。