SelectProperty, MultiSelectProperty: NotionRubyMapping 解説 (35)

はじめに

NotionRubyMapping 解説の第35回目です。今日は Select プロパティの追加です。データベースは共通なものを使い回します。

Database properties (32-35)

irb(main):002> db = Database.find "https://www.notion.so/hkob/cad035c49e5346e78331cb5d05cbc754?v=a03e96ed79ad4d35808e7a08583396a0&pvs=4"
=> NotionRubyMapping::Database-cad035c49e5346e78331cb5d05cbc754

SelectProperty

まず、SelectProperty を追加し、sp に代入しておきます。

irb(main):007> sp = db.add_property SelectProperty, "Select"
=>
#<NotionRubyMapping::SelectProperty:0x000000012745fe70

SelectProperty はデータベースのプロパティとして設置可能なオプションを設定する必要があります。このオプションは add_select_option で設定できます。先ほど作成した sp に対して3つのオプションを追加してみます。

irb(main):009> sp.add_select_option name: "Tokyo", color: "green"
=> [{"name"=>"Tokyo", "color"=>"green"}]
irb(main):010> sp.add_select_option name: "Osaka", color: "blue"
=> [{"name"=>"Tokyo", "color"=>"green"}, {"name"=>"Osaka", "color"=>"blue"}]
irb(main):011> sp.add_select_option name: "Kyoto", color: "yellow"
=>
[{"name"=>"Tokyo", "color"=>"green"},
 {"name"=>"Osaka", "color"=>"blue"},
 {"name"=>"Kyoto", "color"=>"yellow"}]
irb(main):012> db.save
=> NotionRubyMapping::Database-cad035c49e5346e78331cb5d05cbc754

実行すると以下のようになりました。

SelectProperty

MultiSelectProperty

MultiSelectProperty も同じです。まず、MultiSelectProperty を追加し、msp に代入しておきます。

irb(main):013> msp =db.add_property MultiSelectProperty, "MultiSelect"
=>
#<NotionRubyMapping::MultiSelectProperty:0x0000000105133a20

MultiSelectProperty もオプションは add_multi_select_option で設定できます。メソッド名が異なるので注意してください。先ほど作成した msp に対して3つのオプションを追加してみます。

irb(main):014> msp.add_multi_select_option name: "macOS", color: "purple"
=> [{"name"=>"macOS", "color"=>"purple"}]
irb(main):015> msp.add_multi_select_option name: "iOS", color: "red"
=> [{"name"=>"macOS", "color"=>"purple"}, {"name"=>"iOS", "color"=>"red"}]
irb(main):016> msp.add_multi_select_option name: "iPadOS", color: "pink"
=>
[{"name"=>"macOS", "color"=>"purple"},
 {"name"=>"iOS", "color"=>"red"},
 {"name"=>"iPadOS", "color"=>"pink"}]
irb(main):017> db.save
=> NotionRubyMapping::Database-cad035c49e5346e78331cb5d05cbc754

結果は以下のようになりました。

MultiSelectProperty

おわりに

今回は、選択オプションが存在する SelectProperty と MultiSelectProperty を紹介しました。事前にわかっているオプションがあれば、データベース生成時に用意しておくことができます。

SelectProperty と MultiSelectProperty のマニュアルはこちらです。

SelectProperty

MultiSelectProperty

NotionRubyMapping解説