はじめに
NotionRubyMapping 解説の第41回目です。昨日からページ側のプロパティを解説しています。二回目は Date プロパティの変更です。前回からデータベース内の最初のページを使って説明していきます。
irb(main):002> page = Page.find "https://www.notion.so/hkob/619a113814134c759773175ac988b96a?pvs=4" => NotionRubyMapping::Page-619a113814134c759773175ac988b96a
Date Property
まず、Date Property を取得します。
irb(main):004> dp = page.properties["Date"] => #<NotionRubyMapping::DateProperty:0x0000000105f5aa18
date で日付の設定状況を確認できます。現在は何も設定されていないので空です。
irb(main):005> dp.date
=> {}
start_date で開始日・開始時刻は変更できます。
irb(main):006> dp.start_date = Date.today => #<Date: 2024-04-03 ((2460404j,0s,0n),+0s,2299161j)> irb(main):007> page.save => NotionRubyMapping::Page-619a113814134c759773175ac988b96a
開始日付が設定されました。
date で確認すると start に値が入っています。
irb(main):008> dp.date => {"start"=>"2024-04-03", "end"=>nil, "time_zone"=>nil}
end_date で終了日・終了時刻が変更できます。
irb(main):009> dp.end_date = Date.today + 1 => #<Date: 2024-04-04 ((2460405j,0s,0n),+0s,2299161j)> irb(main):010> page.save => NotionRubyMapping::Page-619a113814134c759773175ac988b96a
終了日も設定されました。
Date でなく Time を入れると時刻もつけられます。
irb(main):011> dp.start_date = Time.now => 2024-04-03 21:42:18.172269 +0900 irb(main):012> page.save => NotionRubyMapping::Page-619a113814134c759773175ac988b96a
開始に時刻がつくと終了にも時刻が 0:00 でつけられました。
date は以下のようになっています。
irb(main):018> dp.date => {"start"=>"2024-04-03T21:42:00.000+09:00", "end"=>"2024-04-04T00:00:00.000+09:00", "time_zone"=>nil}
Notion API では time_zone でタイムゾーンを設定することができます。ただし、その場合には start と end からタイムゾーン情報を切り出す必要があります。Date や Time ではそのような文字列を設定できないので、直接文字列を設定する必要があります。
irb(main):019> dp.start_date = "2024-04-03T10:00:00" => "2024-04-03T10:00:00" irb(main):020> dp.end_date = "2024-04-03T11:00:00" => "2024-04-03T11:00:00" irb(main):021> dp.time_zone = "GMT" => "GMT" irb(main):022> page.save => NotionRubyMapping::Page-619a113814134c759773175ac988b96a
GMT なので +9 時間の時間が見えています。
おわりに
今回はページの Date Property の変更を説明しました。Date で設定することで日付、Time で設定することで時刻ありの日付が設定できます。また、time_zone を設定する場合には、時刻にタイムゾーンが設定されないように文字列を設定する必要があります。
DateProperty のマニュアルはこちらです。