4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

XbitAdvent Calendar 2023

Day 2

Notion APIで遊ぼう

Last updated at Posted at 2023-12-01

はじめに

2023年10月から社内ITとしてお仕事している山下です。早いもので、もうすっかり年の瀬になってしまいました。
新しい部署に異動し、議事録の作成を自動化できないかな :eyes: と思いやってみた内容です。

少々、Notion APIのPOSTは概念の理解が必要なため、まとめを記載しています。手段だけ知りたい方は実装から読み始めてみてください👼

作るもの

  • Google Calendarからスケジュールを週次で取得する
  • 任意のフォーマットの議事録を作成する⬅️今回はココ
  • スケジュール実施1日前に議事録をチャンネルでメンションする

概念

今回Notion APIを扱ううえで、代表的なオブジェクトを3つ紹介します。

Pages

  • 名前通り、Notionの1ページ分の内容を指します。Databasesとは明確な差分があり、各々の要素を内包しているトップレベルの概念です。
    Screenshot 2023-11-20 at 18.50.39 copy 3.png

Databases

  • リスト状もしくはサムネイルで表すことのできるデータの集合体です。
  • Pagesと同様に1つで1エンドポイントを持つことができますが、下位概念であるBlocksを持たない場合、存在できません。
    databases.png

Blocks

  • Pagesを構成する、部分的なデータです。
  • headings, toggles, paragraphs, lists, mediaなどのtypeを持ちます。

blocks.png

実装の前にIntegration作成

実装

curlでお試し

それではNotionの概念たちを操作して議事録を作っていきます。
まずは作りたい姿を想像してみましょう。

今回は新規の議事録をただ作るのではなく、そのリンクをPageの子要素にあたるDatabasesにならべます。
Screenshot 2023-11-20 at 19.44.14.png

結果だけ言うと下記のcurlを実行するとやりたいことができます

curl 'https://api.notion.com/v1/pages' \
  -H 'Authorization: Bearer "'$YOUR_TOKEN'"' \
  -H "Content-Type: application/json" \
  -H "Notion-Version: 2022-06-28" \
  --data '{
	"parent": { "database_id": "'$TARGET_LIST_ID'" },
  "icon": {
  	"emoji": "🕰️"
  },
	"cover": {
		"external": {
			"url": "https://hogehoge/img_dayo/minnna.png"
		}
	},
	"properties": {
        "title": [{ "type": "text", "text": { "content": "Minutes1" }]
	},
	"children": [
		{
			"object": "block",
			"type": "heading_2",
			"heading_2": {
				"rich_text": [{ "type": "text", "text": { "content": "Minutes1" } }]
			}
		},
		{
			"object": "block",
			"type": "paragraph",
			"paragraph": {
				"rich_text": [
					{
						"type": "text",
						"text": {
							"content": "Nanikano Link",
							"link": { "url": "https://x-bit.co.jp/" }
						}
					}
				]
			}
		}
	]
}'

Screenshot 2023-11-20 at 19.34.38.png
いえーい👏

ポイント

  1. Pageには下位概念がある
  2. どの位置の、どのプロパティを更新するか、具体をイメージする必要がある
  3. イメージできたら、細かくJSONでAPIに教えてあげる

最後に

株式会社クロスビットでは、デスクレスワーカーのためのHR管理プラットフォームを開発しています。
一緒に開発を行ってくれる各ポジションのエンジニアを募集中です。


クリスマスも仕事でしょ…?どうせなら私たちと楽しく仕事しませんか…🎅


https://herp.careers/v1/xbit
https://note.com/xbit_recruit
https://xbit.notion.site/Xbit-Entrance-book-115f8879d36d42b2ae544fbf2fb4eb85
https://speakerdeck.com/xbit/5fen-tewakarukurosuhitutonohurotakutokai-fa-timu

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?