最近、業務でつかっているSpreadsheetで妙なことがあった。
設定ファイルの更新をする際の差分チェックをするために、既存の設定を別ファイルからIMPORTRANGEとQUERYで引っ張っている箇所がある(こんな説明でごめんね、でもこれしか言いようがない)。
今週、その作業をしていたら、想定し得ないぐらいの新規行・廃止行がでてきた。そんなはずはない、更新は軽微だ。明らかにおかしい。不思議に思って中身をチェックするとひどいことに気づいた。
設定は4列からなっていて、どの列も空白は存在しない。にもかかわらず、IMPORTRANGE/QUERYで展開した既存設定は、一部の行の1列だけが欠損していた。
???
念の為元データのあるファイルを検索してチェックするが、そのデータには欠損がない。だとするとIMPORTRANGEとQUERYのどこかで欠損が発生している。
工程をわけてやってみると、IMPORTRANGEでは問題なく参照できていたデータが、QUERYで参照した際に欠損しているのを確認した。QUERYはWHERE句で正規表現絞り込みをしているだけだ。
まったくもって意味がわからない。これまではこんなことはなかったし、どうチェックしてもこんなことが正常系で起きる理屈がない。
仕方がないのでQUERYの利用をやめてFILTERにした。もとよりFILTERで十分な処理だったが、FILTERだとIMPORTRANGEを似会かかないといけない。やや好みではない。
=FILTER(IMPORTRANGE(...),REGEXMATCH(IMPORTRANGE(...),
^hoge/)
こちらだと正常に動いた。これはちょっと重大な信頼性の問題だ。