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

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

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

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

Google Apps Script

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

Q&A

解決済

1回答

3386閲覧

IMPORTRANGE関数での"インポート範囲の内部エラーです。"の検知方法

takaD

総合スコア315

Google スプレッドシート

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

Google Apps Script

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

0グッド

0クリップ

投稿2020/01/17 07:13

前提・実現したいこと

IMPORTRANGE関数を使い、単純な表示をさせようとしています。

ユーザー側からは、エラーが発生したら1つのスクリプトを動かしてもらって対処しようと思っております。

そのスクリプトを動かすと、複数のセルを精査して、エラーが発生しているセルのみを修正するような仕組みにしようとしています。

ですが、そのエラーを検知する方法が解らない状態になっています。

対象の実際の関数は

=IF(A3="","",IMPORTRANGE(A3,"初期設定!A1"))

こんな感じにして、この関数で言うと、A3にはシートのID
初期設定!A1には "OK"と単純に入力されているセルになります。

発生している問題・エラーメッセージ

例

これを上記画像の様に表示させて(実際に使用する場合は別の範囲だったりしますが)

'#REF!'にマウスをあててエラー内容を見たときに。
これらのシートをリンクする必要があります
のセルを.getValue()してLogger.logで見てみると、"#REF!"が返ってきますが、

インポート範囲の内部エラーです
の場合(今回は'C9'のセル)、過去に表示されていた情報である"OK"が返ってきてしまい、GAS上だとエラーが検知できなく、IF文等で処理を分けられません。

該当のソースコード

ログ検知のコード

GAS

1function myFunction2() { 2var ss = SpreadsheetApp.getActiveSpreadsheet(); 3var ssIn = ss.getSheetByName("初期設定") 4var range = ssIn.getRange(1,3,15,1) 5var log = range.getValues(); 6 7for (var i in log) 8Logger.log(log[i]) 9}

実際のログ
LOG

試したこと

セルを移動や再読み込み等して、Loading...の状態にすると、数秒でインポート範囲の内部エラーが改善されて、またOKと表示される様になりますが、
改善方法は解っていてもスクリプト上での検知方法が解らない状況になります。

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

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

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

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

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

papinianus

2020/01/18 06:51

調査のためインポート範囲の内部エラーを発生させる方法をご教示ねがえますか。 あと、何も考えずにユーザがやるべき直し方を暗黙に実行すればいいと思うのですが、なぜエラーでどうやれば直るかわからないので提案しようがないです。
takaD

2020/01/18 12:35 編集

内部エラーが発生する理由がわからず、再現の仕方もわからない状態です・・・ 実際に使用する際にはシートは非表示にさせて、ユーザー側からは関数をいじれない様にしたいとおもっています。 直しかたとしては、その関数をいじって、例えば今回の例でいうと IF(A3="","",IMPORTRANGE(A3,"初期設定!A1")) で一度貼ってから =IF(A3="","",IMPORTRANGE(A3,"初期設定!A1"))で貼りなおすか 対象のセル.moveTo(どこか適当なセル) どこか適当なせる.moveTo(対象のセル) を実行すると、改善されたりします。 内部エラーの原因が自分もわからない状態で、再現性がなく調査できない状況、大変申し訳ありません。
guest

回答1

0

自己解決

時間を待ってページの再更新(F5)をする等、他の対応法を検討してみます。

投稿2020/02/01 00:02

takaD

総合スコア315

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問