はじめに
hkob の雑記録の第212回目は、テレビ出演や書籍発売などの情報を保持する Activities を追加します。
ER図
Activities は Songs に二つ接続します。 TV 出演の Performances と CM の Tieup songs です。

Activities のエクスポート
Activities は以下のプロパティをエクスポートすることにします。もともとは TV Station / Distribution / Publisher / Company はタイプごとに異なったプロパティを用意していたのですが、数式で Publishers として一つにまとめてしまいました。また、日付範囲があるので、開始日と終了日の二つのプロパティに分けています。

作成した CSV ビューはこんな感じです。

前回と同様に CSV に書き出し後、リレーションの URL 削除をしてしまいます。
sed 's/ (https:\/\/www.notion.so[^)]*)//g' Activities\ ec88eba652474d6781309a77d67fddf5.csv | sed 's/\([0-9][0-9]*\)\/\([0-9][0-9]*\)\/\([0-9][0-9]*\)/\1-\2-\3/g' > Activities.csv
変換結果は以下のようになります。Performances, Tieup Song を作成するので、それぞれ Str とタイトルを修正しています。
Name,Type,Sub type,Start date,End date,Publishers,Author,Photographer,PerformancesStr,Tieup songStr,Comment,Official link TVハッカー,レギュラー番組 (テレビ),,1987年4月19日,1987年9月27日,フジテレビ,,,,,毎週日曜 20:00 - 20:54, あいつに恋して,映画,,1987年5月30日,1987年5月30日,東宝,,,,NEW SEASON,主題歌, 銀河テレビ小説 まんが道・青春編,レギュラー番組 (テレビ),,1987年7月27日,1987年8月14日,日本放送協会,,,,,, パイオニア 「留守番テレフォン TF-A5」,CM,,1988年2月23日,1988年11月14日,パイオニア,,,,ミーハー,,
Activities の作成 & インポート
森高千里DBの下に作成したいので、また Cmd-Opt-9 で新規ページを作成します。この新規ページを開き、インポートを実施しました。

インポートを実行しました。

日付範囲に復元
まず、数式で日付範囲を作成します。

数式の内容を Start date にコピーし、Date というタイトルに戻します。また、数式と End date は削除します。

リレーションの作成
Performances リレーションを追加します。多対多の接続であり、双方向リレーションも追加します。


Notion API で Device データを準備
昨日と同様に複数プロパティから id を取得したりする必要があり、かなり面倒な処理となるので、スクリプトを記載します。Device は Name と Device type で一意のページを取得します。
#! /usr/bin/env ruby require "notion_ruby_mapping" include NotionRubyMapping NotionRubyMapping.configure { |c| c.token = ENV["NOTION_API_KEY"] } songs_db = Database.find "235d8e4e98ab80d1a29adfc13458a29d" songs_id_hash = songs_db.query_database.each_with_object({}) do |song, hash| name = song.properties["Name"].full_text hash[name] = song.id end activities_db = Database.find "23fd8e4e98ab80f58875d31a2ea5d766" pp = activities_db.properties["Performances"] tp = activities_db.properties["Tieup song"] query = pp.filter_is_empty.and(tp.filter_is_empty) activities_db.query_database(query).each do |a| ap = a.properties ps = ap["PerformancesStr"].full_text ts = ap["Tieup songStr"].full_text if !ps.empty? ids = performances_str.split(", ").map { |p| songs_id_hash[p] }.compact ap["Performances"].relation = ids end if !ts.empty? ids = tieup_str.split(", ").map { |p| songs_id_hash[p] }.compact ap["Tieup song"].relation = ids end p [a.title, ps, ts] a.save end
実行結果は以下のようになりました。
ruby relation_for_activities.rb ["STEP BY STEP 森高千里写真集", "", ""] ["私がオバさんになっても", "", ""] ["PEACHBERRY", "", ""] ["i-Realite", "", ""] ["Opera", "", ""] ["りくつじゃない", "", ""] ["わかりやすい恋", "", ""] ["朱夏 NEW SEASON", "", ""] ["『森高千里「この街」が大好きよ』", "", ""] ["「森高千里の暮らしのレッスン」", "", ""] ["ハウス食品「ジャワカレー」", "", ""] ["森高千里としか言えない", "", ""] ["武田薬品「ハイシーホワイト2」「ハイシーBメイト2」", "", ""] ["トヨタ「カローラ SPACIO」", "", ""] ["キリンビバレッジ「ナチュラルズ」", "", ""] ["サントリー 「アイスウォッカ", "", "Hey, VODKA!"] ["大塚製薬 「第1回ポカリスエット・イメージガール・コンテスト」グランプリ受賞", "", ""] ["「熊本未来国体」", "", "未来"] ["映画「もういちど逢いたくて 星月童話」", "", "まひるの星"] ["東芝日曜劇場「海まで 5 分」", "", "海まで 5 分"] ["めざましテレビ テーマソング", "", "ララ サンシャイン"] ["Count Down TV オープニング・テーマ", "", "So Blue"]
結果として以下のようにリレーションが設定できました。

必要なくなったプロパティを削除しました。

おわりに
Activities も 182件無事にインポートできました。