5
3

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.

サムザップAdvent Calendar 2021

Day 24

GoogleAppSscriptからNotionAPIを利用してみた

Last updated at Posted at 2021-12-24

本記事は、[サムザップ Advent Calendar 2021]
(https://qiita.com/advent-calendar/2021/sumzap) の12/24の記事です。

#はじめに
初めまして、サムザップの白濱です。
最近話題のNotionで、今年の5月にパブリックベータとして Notion APIが公開されました。
今回は、こちらを使用して、Google Apps ScriptからNotionAPIを実施してみた話をしたいと思います。

#Notion APIについて
2021 5月にパブリックベータとして公開されました。
https://developers.notion.com/

API Reference
https://developers.notion.com/reference/intro

今回は、Google Apps Scriptから利用しました。

#使用したAPIの各種処理について

Notoinデータベースの取得・追加・更新でそれぞれAPIが用意されていて、こちらを使用しました。
・データベースの取得処理
  https://api.notion.com/v1/databases/"+databaseId (※)+"/query
  databaseIdを指定して情報を取得するAPI
  ※ databaseIdは、対象のテーブルのURLのv=以下のIDを指定
  1.jpg

  !一度に取得できるレコード数は、MAX100件
  !100件以降は、ページIDを指定して、取得する

  上記URLに対して、dataとoptionsを指定して、POSTで送信する。
  1ページ目のdata指定
   var data = {'page_size': 100};
  2ページ目以降のdata指定
   var data = {'page_size': 100,'start_cursor': next_cursor};
  next_cursorは、前ページのプロパティ(next_cursor)から設定。

  var options = {"method": "POST","headers": headers,"payload": JSON.stringify(data),"muteHttpExceptions" : true,};

・データベースの追加処理
  https://api.notion.com/v1/pages
  指定して情報を取得するAPI

  上記URLに対して、dataとoptionsを指定して、POSTで送信する。

  var data = {
   "parent": { "database_id": databaseId },
   "properties":{
   "title": [ {"text": { content: 【更新内容】, link: null } } ]
   }
  };

  var options = {"method": "POST","muteHttpExceptions" : true,"payload": JSON.stringify(data),"headers": headers};

・データベースの更新処理
  https://api.notion.com/v1/pages/+pageId (※)
  指定して情報を取得するAPI

  ※ pageIdは、データベースの取得処理で、取得したレコード情報で取得できる。
   (propertyName=ID)

  上記URLに対して、dataとoptionsを指定して、PATCHで送信する。
  (POSTでない点が注意)

  dataは、
  var data = {
   "properties":{"Name": { "name" : [ {"text": { content: 【更新内容】, link: null } } ]}}
  };
  propertiesでNotionのカラム名を指定する。
2.jpg

  var options = {"method": "PATCH","muteHttpExceptions" : true,"payload": JSON.stringify(data),"headers": headers};

・その他注意事項
  操作したいDBに対して、APIのIntegrationを追加しないと操作ができないので注意。
  4.jpg

  Integrationの設定はこちらを参考に。
  https://developers.notion.com/docs/getting-started

#具体的な使用例について
 業務では、GoogleAppSscriptとNotionAPIの連携で以下のような用途に使用しました。
・WrikeとNotionの連携
   WrikeAPIからWrikeデータを取得して、NotionレコードとWrikeタスクを連携。
  5.jpg

・Notionレコードの自動追加
   1ヶ月分のデータ入力用のレコードを月次処理で自動追加。
  7.jpg
   
#まとめ
 Notionは、とても魅力的なツールで、生産性の向上にとても役に立っています。
 APIを使用することで、その魅力や可能性がさらに高まったことを実感しています。
 皆さんもぜひ活用してみてください!

5
3
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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?