googleスプレッドシートのUIは、基本的にメニューとダイアログボックスとサイドバーしかない。
必然的に、ユーザからの入力はサイドバーになる。
サイドバーはHTMLで記述して、クライアントサイドのJava Scriptも動かせる。
入力された年月日が正しい日付かどうかチェックする関数をJava Scriptで作った。
YYYY/M/Dと入力されてもスラッシュで区切られていたらYYYY/MM/DDに整形して戻り値にする。
また、スラッシュ以外だったり、日付として正しくない場合はfalseを返すようにした。
デバッグすると、正しい日付を渡してもfalseが返ってくる。
戻り値の型を見るとBool型になっている。
色々調べても、コードも良さそうだし、ちゃんと整形された日付が返って来るように思われるのに上手く行かない。
仕方がないので、戻り値を配列にして、[0]に結果(true/false)、[1]に、正しければ整形した日付、間違っていれば入力された日付を返すようにした。
ところがこれも上手く行かない。
あちこちにalertを入れてデバッグすると、どうも関数が呼ばれていないように見える。
色々やっても、結果は変わらない。
もう打つ手がないので、同じ関数を関数名を変えて、少しづつコピペして動かしてみると、ちゃんと最後まで動いて期待した値が返ってきた。
コピーしただけなので、コードはまったく同じ。
なんでこんなことが起きるんだろう?
この問題を解決するのに、半日以上かかってしまった。
まったく腹立たしい。
--
のち
No comments:
Post a Comment