なーたのおぼえがき

なーたのおぼえがき

つくったものとか

Google Apps Sctriptで作る参考文献管理ツール② 検索編

こんにちは。暖かくなってきましたね。燕もそろそろ古巣に帰ってくる時期ですし、本当に春って感じ。この間帰宅途中に花桃を見ました。やっぱり綺麗ですね。私は割とソメイヨシノよりも大島桜や山桜が好きなタイプなので、桜並木で綺麗と言われる淡い桜色の集合を見ると「ソメイヨシノー!!」って思います。梅とか桃も花綺麗ですよね、美味しいし。
ちょこちょこお散歩していて思うのですが、花の蜜を好む小鳥たちを見かけない気がしています。道路を彩る桜の花びら、基本的に花びらだけで丸ごと落ちていること、少ないですよね…?
まあそれは地域の特色かもしれないのでおいといて。

別段難しくもないやつを作ったからという理由でまとめるシリーズ(今考えた)第2弾、参考文献管理ツールの検索部分です。れっつごー

はじめに

これは第2弾です。
第1弾は登録編
clairdeluna-eve.hatenablog.com

動機は共通。つまりテンションです。

ツールの動きと外装

外装はこんな感じ
f:id:Clairdeluna_eve:20220409181635p:plain
備品と違ってカード型のレイアウトを採用してみました。なので実装がtableではなくdivの中にaタグ。アイコンは変わらずgoogle material iconを使ってます。便利便利。

動きにも特筆することはなく、検索窓に検索語を入れてアイコンクリックで検索される感じ。中身に関しては備品検索と同じ。
カードをクリックすると該当のページやファイルに直接アクセスできます。以上。

詰まったとこ

唯一タイムゾーンに翻弄された…いや、タイムゾーンではないか。時間周りの仕様(多分)?
解決策は簡単で、getValuesではなくgetDisplayValuesを使ってデータを取得しました。

発覚の状況

システム-データ間の関係がこんな感じ。GASはjsを含む表示まで含めたものだと思ってください。
f:id:Clairdeluna_eve:20220409184035p:plain

実際に使いながらデバッグをしていたところ、登録日の表示(外装では薄い灰色の日付)がスプレッドシートの日付と異なっていることに気づきました。

調べたこと・全体の状況

こういう、1日2日程度の日付の前後はタイムゾーンであろうという予想のもと仕様を確認。
で、Google Apps Scriptくんですが、デフォルトタイムゾーン設定がAmerica/New_York。スプレッドシートくんはAsia/Tokyo。
該当の登録日はGASでnew Dateから取得して書き込み、スプレッドシートでは日付型として認識されています。
スプレッドシートでは問題なく、記憶と同一の日付が表示されていました。
つまり登録部分では問題は特になし。とはいえ一応タイムゾーン設定はAsia/Tokyoへ変更。
参考は
walking-elephant.blogspot.com

次に検索の部分。
受け渡し前の生データを表示させると
f:id:Clairdeluna_eve:20220409192503p:plain
うん、知ってた。さっきと同様の手順でタイムゾーンをAsia/Tokyoへ変更。
タイムゾーンが原因ならばこれで問題なくなるはず。と思って実行したけどあれー?
1日ずれたまま。あれー??
console.logで受け渡し前と表示するデータを書き出してみると、やっぱり表示するデータが一日ずれてる。

原因と思しきこと

もしかして、jsのタイムゾーンが実行環境に依存するから…?
推測でしかないのだけど、先ほどの手順で変更できるタイムゾーン設定は.gsのみで、普通にサーバで実行されたjsのタイムゾーンは元のAmerica/New_York、とか。

対処

1つ1つのデータに対してUtilities.formatDateでタイムゾーンを直して表示するのは無駄すぎるのでスプレッドシートの表示データをそのまま持ってこれるgetDisplayValuesを使って、表示用のデータを取得。文字列として日付型を取得して表示に回した。
無事にスプレッドシートと同じデータが表示されてハッピー。

おわりに

時間の表示以外に詰まったとこがないのでめちゃくちゃ虚無い中身になった。備忘録といえばそうなのでまあいいか。

大学も来週から講義が始まるけど、起きられるかとかその辺だけがとにかく心配。夜更かしには気をつけねば…
ということでこの辺でー