DateProperty(Page): NotionRubyMapping 解説 (41)

はじめに

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 のマニュアルはこちらです。

DateProperty

NotionRubyMapping解説