Sara_Suke3の開発メモ

仕事/趣味/勉強で構築した内容をアウトプットしてます。

【スプレッドシート】=NOW()と条件付き書式で時刻表を作る

趣味でタイムテーブルを管理したい事案が発生したので、

それについての作業メモになります。

完成図

以下が完成図です。

f:id:Sara_Suke3:20210712103535p:plain

時刻表

機能としては「今の時刻の行をハイライトする」といった感じのシンプルなものです。

 

 

編集手順

・B列に日時を指定し、表示形式を変更

・=NOW()関数で現在時刻を取得・編集する

・NOW関数の自動更新を設定する

・条件書式を設定する

 

B列に日時を指定し、表示形式を変更

 まずはB1に日時のデータを入力します。

f:id:Sara_Suke3:20210712144541p:plain

 あとはセルの右下を選択し、B列末端までドラッグで下ろします。

f:id:Sara_Suke3:20210712144939p:plain

 こんな感じ。

 

 このままだと見た目がお些末なので表示を変更します。

 上部メニューの「表示形式>数字>表示形式の詳細設定>その他の日付や時刻の形式」

 へと進みます。

f:id:Sara_Suke3:20210712145143p:plain

 表示形式が設定できるので、状況に合わせてカスタマイズを行います。

f:id:Sara_Suke3:20210712145435p:plain

 今回の場合だと「時」だけ表示されればよいので、

 他の情報を削除して適用しましょう。

 

=NOW()関数で現在時刻を取得・編集する

 NOW関数を用いると、ページの表示・更新時の日時が表示されます。

f:id:Sara_Suke3:20210712150053p:plain

 

 次に、NOW関数で表示した日時を、B列と一致する様に加工します。

 以下が各データの抽出と、合体後の数値となります。

f:id:Sara_Suke3:20210712151927p:plain

  各セルの関数は以下の通りです。

f:id:Sara_Suke3:20210712151858p:plain

 年:=YEAR()関数

 月:=MONTH()関数※

 日:=DAY()関数※

 時:=HOUR()関数

 分と秒は00で設定するので関数を使用せず、「'00」と入力して用意します。

 (00だけでは数値として認識され、0に変換されてしまう為)

 

 ※月日が1桁の場合、関数で数値を取得すると10の位の0が消失する

 (07月の場合、7になってしまう)ので、IFで条件分岐を設定して

  0を付与しています。

 

 抽出したデータを結合する際にはJOIN関数を用いて、年月には「/」

 時刻には「:」をデータ間に付与してあげます。

 日時の間には半角スペースが含まれていますので、「&" "」を

 挟んで挿入しています。

 

NOW関数の自動更新を設定する

 現状だと「NOW関数が自動で更新されない」問題があるため、

 シートの設定を変更します。

 

 まず、上部メニューの「ファイル>Googleスプレッドシートの設定」を選択します。

f:id:Sara_Suke3:20210712150512p:plain

 「計算」タブを選択し、再計算欄を「変更時」から「変更時と毎時(or毎分)」

 に変更して、設定と保存を押します。

f:id:Sara_Suke3:20210712150657p:plain

 上記の変更で、NOW関数が毎時or毎分自動更新されるようになります。

 ※PC上のブラウザでは自動更新されますが、スマートフォン用アプリ

 「スプレッドシート」では設定が適用されず、自動更新されない可能性があります。

 (2021年7月現在)

条件書式を設定する

 「ドラッグで範囲選択→右クリックで条件付き書式を選択」または

 上部メニューから「表示形式>条件付き書式」を選択します。

f:id:Sara_Suke3:20210712153528p:plain

 あとはB列の一致するセルに適用されるように、カスタム数式と書式を設定します。

 

f:id:Sara_Suke3:20210712154738p:plain

 無事に適用されました、やったね。

 

雑感 

 実際のところはこんなスマートな運びではなく、

 「NOWじゃ一致しないやん!ばらしてくっつけてみよう」

 「MONTHとDAYの0消えてるやん!0&付与で大丈夫かな?」

 等の試行錯誤はありました。

 

 ただ、上手くいく・いかないに関わらずあれこれ考えながら

 形にしていくのは楽しいなーと改めて実感できたので、

 とても有意義でした。

 

追記

 今回のシートはしばらく使うつもりで弄ってましたが、やんごとなき事情により

 1週間で役目を終えることになりました。

 ズコーッ

【Rails】reference型を使用せず外部キー制約をつけたカラムを作成したい時

オリジナルアプリ作成時のメモです。

中間テーブルを作成する際に、片方のテーブル(Note)をstring型(新規作成時にランダム英数字の文字列を生成・idに格納)にした為、以下のエラーが発生しました。

Image from Gyazo

 

ざっくり訳すと「型が不一致だから、string使うならt.stringにするなりして統一してや」って内容です。

そのままstringにするだけでは中間テーブルに外部キー制約つけられないので、「index指定」と「add_foreign_key」を追加することで解決しました。

 

修正前:

t.references :note, foreign_key: true

修正後:

t.string :note_id, index: true
t.timestamps
end
add_foreign_key :note_users, :notes, column: :note_id

 

1つの事に挑戦(idをstringに変更)すると、芋づる式に色んな経験や知識が得られるのって素晴らしいですね。

また、各種記録を残して下さった先人のライターに感謝。

参考先:

qiita.com

qiita.com