2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TROCCOでNotionのデータ転送してみた

Posted at

TROCCOがNotionからのデータ転送に対応しました:sparkles:

Notionとは?

Notionは、メモ、ドキュメント、タスク管理、データベースなど、様々な機能を一つにまとめた多機能ワークスペースです。個人利用からチームでの共同作業まで、幅広い用途に対応できる柔軟性の高さが特徴です。

TROCCOとは?

TROCCOは、データの連携・変換をスムーズに実現するクラウド型データ統合ツールです。
執筆者はTROCCOのカスタマーサクセスエンジニアをしています。


今回転送するデータ

Notion上で以下のようなデータベース(KANBAN)を用意しました。
これはデフォルトのテンプレートを元にしております。

image.png

KANBAN形式で表示されておりますが、実態は以下のようなデータベースとなっております。

image.png

このデータベースを、TROCCO経由だとどのように取得できるのか、試してみます!


TROCCOで転送してみた

接続情報の作成

【Notion】インテグレーションの作成

こちら⏬️のページより、インテグレーションを作成します。

image.png

今回は、「内部インテグレーション」を作成しました。
「インテグレーションシークレット」をコピーしておきます。


【TROCCO】接続情報の作成

こちら⏬️から接続情報を作成します。

先ほどコピーしておいた「インテグレーションシークレット」をペーストするだけです。

image.png


【TROCCO】転送設定の作成

TROCCO側の設定は⏬️の通り。先ほど作成した接続情報を選択肢、「データベース一覧」を選択します。

image.png

「データベースID」の取得方法は以下の記事を参考にしました。

転送先ですが、今回はSnowflakeを利用しました。


プレビューを確認

設定完了、いざプレビューを確認!!と思ったら・・・404エラーが発生してしまいました。


【Notion】インテグレーションとのコネクト

インテグレーション経由でNotionのデータを取得するためには、ページ右上の…から、先程作成したインテグレーションとコネクトする必要がありました。

image.png


プレビューを再確認

無事プレビューが表示されました。

image.png

このままSnowflakeへ転送してみます。

転送完了!

image.png

Snowflake上にテーブルが作成されました

image.png

データの加工

主なデータはPROPERTIESにJSONで格納されています。

{
  "ステータス": {
    "id": "EAqu",
    "status": {
      "color": "blue",
      "id": "xfqo",
      "name": "開発中"
    },
    "type": "status"
  },
  "プロダクトエリア": {
    "id": "sc%7Bm",
    "multi_select": [],
    "type": "multi_select"
  },
  "リクエスト名": {
    "id": "title",
    "title": [
      {
        "annotations": {
          "bold": false,
          "code": false,
          "color": "default",
          "italic": false,
          "strikethrough": false,
          "underline": false
        },
        "href": null,
        "plain_text": "AI生成機能の導入",
        "text": {
          "content": "AI生成機能の導入",
          "link": null
        },
        "type": "text"
      }
    ],
    "type": "title"
  },
  "リクエスト日": {
    "created_time": "2025-03-31T10:52:00.000Z",
    "id": "ZsV%5C",
    "type": "created_time"
  },
  "依頼者": {
    "id": "%3DeOH",
    "people": [
      {
        "avatar_url": "https://*******",
        "id": "*****",
        "name": "*****",
        "object": "user",
        "person": {
          "email": "********"
        },
        "type": "person"
      }
    ],
    "type": "people"
  },
  "優先度": {
    "id": "PkHb",
    "select": null,
    "type": "select"
  },
  "担当者": {
    "id": "%5CiBz",
    "people": [],
    "type": "people"
  }
}

Notion上だと、黄色の枠部分⏬️です。
image.png

転送したデータをNotion上の表示に近づけたいので、SQLを使っていい感じに加工していきます。

Snowflakeの場合、PARSE_JSONを使用し次のように値を取り出すことができます。

SELECT
    PARSE_JSON(PROPERTIES):"リクエスト名".title[0].plain_text::STRING AS "リクエスト名",
    PARSE_JSON(PROPERTIES):"リクエスト日".created_time::TIMESTAMP_NTZ AS "リクエスト日",
    PARSE_JSON(PROPERTIES):"依頼者".people[0].name::STRING AS "依頼者",
    PARSE_JSON(PROPERTIES):"ステータス".status.name::STRING AS "ステータス",
    PARSE_JSON(PROPERTIES):"プロダクトエリア".multi_select[0].name::STRING AS "プロダクトエリア",
    PARSE_JSON(PROPERTIES):"優先度".select.name::STRING AS "優先度",
    PARSE_JSON(PROPERTIES):"担当者".people[0].name::STRING AS "担当者"
FROM
    CS_TEAM.TEST.NOTION_DB_TEST;

Notion上の項目のデータ型に応じて、中身の取り方を工夫する必要があります。

WITH句を利用したほうが多少スッキリはします。

WITH P_JSON AS(
select PARSE_JSON(PROPERTIES) AS P FROM CS_TEAM.TEST.NOTION_DB_TEST
) 
select
    P:"リクエスト名".title[0].plain_text::STRING AS "リクエスト名",
    P:"リクエスト日".created_time::TIMESTAMP_NTZ AS "リクエスト日",
    P:"依頼者".people[0].name::STRING AS "依頼者",
    P:"ステータス".status.name::STRING AS "ステータス",
    P:"プロダクトエリア".multi_select[0].name::STRING AS "プロダクトエリア",
    P:"優先度".select.name::STRING AS "優先度",
    P:"担当者".people[0].name::STRING AS "担当者"
FROM P_JSON;

※自分で考えるのがちょっとめんどくさかったので、JSONをAIくんに投げていい感じに土台となるSQLを作ってもらいました。
※BigQueryなどでも、記法は違えど同じ様なことはできるかと思います

実行結果です⏬️
image.png

Notion上の表示⏬️と同じ用に整えることができました
image.png

この形式にできれば、他のシステムと連携した集計・分析もやりやすいですね💡

おわり

いかがでしたでしょうか。
TROCCOの設定は非常に簡単、その後のJSONのパースもSQLであればサクッと可能です。
Notionのデータベース×他のデータベースとの組み合わせ、活用の可能性は無限大だなと思いました

この記事を見てくださった方の、なにか少しでもお役に立てていたらならば幸いです🙏

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?