9.1 共通オブジェクトの分類
- 共通オブジェクトを分類した図です。
graph LR A(Common Object) --> F(File) & E(Emoji) & P(Parent) & RT(Rich text) RT --> M(Mention) & T(Text) & EQ(Equation) M --> UM(User mentions) & PM(Page mentions) & DBM(Database mentions) & DM(Date mentions) & LP(Link preview mentions) & TM(Template mentions)
9.2 User Object
- 以下のメソッドで bot ユーザを取得します。
bot = UserObject.find_me
- Ruby オブジェクトに含まれている User object を JSON で表示してみます。
print JSON.pretty_generate(bot.json)
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けbot User object
- 以下のメソッドで一般ユーザを取得します。
user = UserObject.all.select { |u| u.json["type"] == "person" }.first
- Ruby オブジェクトに含まれている User object を JSON で表示してみます。
print JSON.pretty_generate(user.json)
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けnormal User object
- 取得した User object の id を記録してください。この
user_id
を13節で利用します。
自分の User Object の id を記録します。user_id
"id": "この部分をコピー"
のような形式の部分があるので、該当部分をコピーして、以下の欄に貼り付けておいてください。例: 2200a911-6a96-44bb-bd38-6bfb1e01b9f6
9.3 File object
ここから下は 37 ページ以降で取得するオブジェクトのサンプルです。ここからそれぞれのブロックへのリンクをコピーしてください。
External file object
- コールアウトブロックに対して「ブロックへのリンクをコピー」とします。
ブロックの URL を記載
例: https://www.notion.so/hkob/2-620dec0c29ca44e29b5a6f35eff516a2#38af0e9ad8e945abba63232ba5b23796コールアウトブロックの URL
- 以下のメソッドでコールアウトブロックを取得します。
b = Block.find "コピーしたリンクをここに貼り付け"
- コールアウトブロックに含まれている File object を JSON で表示してみます。
print JSON.pretty_generate(b.json["callout"]["icon"])
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けFile object
補足説明NotionRubyMapping のキャッシュクリア
NotionRubyMapping は API アクセスの効率化のために、一度アクセスしたブロックに対する JSON は id と紐づけてキャッシュされます。このため、アイコンを変更して再度ブロックを取得しても、キャッシュからデータを取り出してしまい、Notion API にアクセスをしません。どうしても新しいデータをアクセスしたい場合には、以下のようにしてこのキャッシュをクリアしてください。
NotionCache.instance.clear_object_hash
9.4 Emoji object
Emoji Object
- コールアウトブロックに対して「ブロックへのリンクをコピー」とします。
ブロックの URL を記載
例: https://www.notion.so/hkob/2-620dec0c29ca44e29b5a6f35eff516a2#38af0e9ad8e945abba63232ba5b23796コールアウトブロックの URL
- 以下のメソッドでコールアウトブロックを取得します。
b = Block.find "コピーしたリンクをここに貼り付け"
- コールアウトブロックに含まれている File object を JSON で表示してみます。
print JSON.pretty_generate(b.json["callout"]["icon"])
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けEmoji object
9.5 Parent object
- 今取得したブロックの Parent object を JSON で表示してみます。
print JSON.pretty_generate(b.json["parent"])
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けParent object
9.6 Rich text object
9.6.1 Text object
- テキストブロックに対して「ブロックへのリンクをコピー」とします。
ブロックの URL を記載
例: https://www.notion.so/hkob/2-620dec0c29ca44e29b5a6f35eff516a2#38af0e9ad8e945abba63232ba5b23796テキストブロックの URL
- 以下のメソッドでテキストブロックを取得します。
b = Block.find "コピーしたリンクをここに貼り付け"
- テキストブロックに含まれている最初(0番目)の Text object (装飾なし)を JSON で表示してみます。
print JSON.pretty_generate(b.json["paragraph"]["rich_text"][0])
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けText object (装飾なし)
- テキストブロックに含まれている1番目の Text object (ボールド)を JSON で表示してみます。
print JSON.pretty_generate(b.json["paragraph"]["rich_text"][1]) # ボールド
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けText object (ボールド)
- テキストブロックに含まれている2番目の Text object (イタリック)を JSON で表示してみます。
print JSON.pretty_generate(b.json["paragraph"]["rich_text"][2]) # イタリック
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けText object (イタリック)
- テキストブロックに含まれている3番目の Text object (アンダーライン)を JSON で表示してみます。
print JSON.pretty_generate(b.json["paragraph"]["rich_text"][3]) # アンダーライン
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けText object (アンダーライン)
- テキストブロックに含まれている4番目の Text object (
取り消し線)を JSON で表示してみます。
print JSON.pretty_generate(b.json["paragraph"]["rich_text"][4]) # 取り消し線
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けText object (取り消し線)
- テキストブロックに含まれている5番目の Text object (
コード
)を JSON で表示してみます。
print JSON.pretty_generate(b.json["paragraph"]["rich_text"][5]) # コード
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けText object (コード)
- テキストブロックに含まれている6番目の Text object (赤字)を JSON で表示してみます。
print JSON.pretty_generate(b.json["paragraph"]["rich_text"][6]) # 赤字
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けText object (赤字)
- テキストブロックに含まれている7番目の Text object (緑背景)を JSON で表示してみます。
print JSON.pretty_generate(b.json["paragraph"]["rich_text"][7]) # 緑背景
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けText object (緑背景)
- テキストブロックに含まれている8番目の Text object (Google)を JSON で表示してみます。
print JSON.pretty_generate(b.json["paragraph"]["rich_text"][8]) # リンクあり
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けText object (Google)
9.6.2 Equation object
- 数式が書かれたテキストブロックに対して「ブロックへのリンクをコピー」とします。
ブロックの URL を記載
例: https://www.notion.so/hkob/2-620dec0c29ca44e29b5a6f35eff516a2#38af0e9ad8e945abba63232ba5b23796テキストブロックの URL
- 以下のメソッドでテキストブロックを取得します。
b = Block.find "コピーしたリンクをここに貼り付け"
- テキストブロックに含まれている Equation object を JSON で表示してみます。
print JSON.pretty_generate(b.json["paragraph"]["rich_text"][0])
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付け
9.6.3 Mention object
C2. Notion APIで理解するNotionのデータ構造サンプルデータベースJan 1, 2022Sep 4, 2022Sep 4, 2022 18:16
- さまざまなメンションが書かれたテキストブロックに対して「ブロックへのリンクをコピー」とします。
ブロックの URL を記載
例: https://www.notion.so/hkob/2-620dec0c29ca44e29b5a6f35eff516a2#38af0e9ad8e945abba63232ba5b23796テキストブロックの URL
- 以下のメソッドでテキストブロックを取得します。
b = Block.find "コピーしたリンクをここに貼り付け"
- テキストブロックに含まれている最初(0番目)の User mentions object を JSON で表示してみます。
print JSON.pretty_generate(b.json["paragraph"]["rich_text"][0])
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けUser mentions object
- テキストブロックに含まれている1番目の Page mentions object を JSON で表示してみます。書籍に書かれている情報とタイトルなどの表記が若干異なる件はご了承ください。
print JSON.pretty_generate(b.json["paragraph"]["rich_text"][1])
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けPage mentions object
- テキストブロックに含まれている2番目の Database mentions object を JSON で表示してみます。
print JSON.pretty_generate(b.json["paragraph"]["rich_text"][2])
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けPage mentions object
- テキストブロックに含まれている3番目の Date mentions object を JSON で表示してみます。
print JSON.pretty_generate(b.json["paragraph"]["rich_text"][3])
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けDate mentions object
- テキストブロックに含まれている4番目の Link preview mentions object を JSON で表示してみます。
print JSON.pretty_generate(b.json["paragraph"]["rich_text"][4])
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けDate mentions object
- テンプレートオブジェクトは作成時に Date mentions object や User mentions object に変換されてしまうので、ここでは NotionRubyMapping の機能で作成します。最初は
@today
に相当する Template mentions object です。
print JSON.pretty_generate(MentionObject.new("template_mention" => "today").property_values_json)
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けTemplate mentions object (Today)
- 次は
@now
に相当する Template mentions object です。
print JSON.pretty_generate(MentionObject.new("template_mention" => "now").property_values_json)
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けTemplate mentions object (Today)
- 最後は
@me
に相当する Template mentions object です。
print JSON.pretty_generate(MentionObject.new("template_mention" => "me").property_values_json)
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けTemplate mentions object (Today)
9.7 Comment object
コメントが追加されたテキストブロック
- コメントが追加されたテキストブロックに対して「ブロックへのリンクをコピー」とします。
ブロックの URL を記載
例: https://www.notion.so/hkob/2-620dec0c29ca44e29b5a6f35eff516a2#38af0e9ad8e945abba63232ba5b23796テキストブロックの URL
- 以下のメソッドでテキストブロックを取得します。
b = Block.find "コピーしたリンクをここに貼り付け"
- ブロックから DiscussionThread object を取得します。
dt = b.comments.values.first
- DiscussionThread object から Comment object を取得します。
comment = dt.comments.first
- 取り出した Comment object を JSON で表示してみます。
print JSON.pretty_generate(comment.json)
- 後で確認できるように出力された結果を保存しておきましょう。
JSON 部分をコピー&貼り付けComment object