スプレッドシートに入力しているデータの先頭の'0'が、いつの間にか消えてしまうとクレームが来た。
スプレッドシートのデータは処理速度の問題で、一旦2次元配列(メモリ)に取り出して、処理を終えると書き戻すと云うのが、GASの標準的な作法になっている。
ずっとこの方法を取っていたのだけど、 書式なしのテキスト表示(書式設定)している先頭に’0’が付いたデータを配列に取り出し、シートに書き戻すと先頭の’0’が消えてしまうことがわかった。
最初、なぜ’0’が消えるのかわからなくて、書式設定が書き換わるせいかと思っていたのだけど、どうもそうではないことに気づいた。
ググってみると、getDisplayValues()という関数があることが分かった。
ずっとgetValues()という関数しか使っていなかったし、書式が無視されて配列に格納されることを知らなかった。
どうやらgetDisplayValues()を使うと、セルに表示されている見た目通りの値が配列に格納されるらしい。
デバッグのときは、getValues()で上手くいったたのに、リリース後に起きたのが腑に落ちないけど、getDisplayValues()に修正したのでこれで大丈夫だと思われ。
--
のち
いちじ
No comments:
Post a Comment