LoginSignup
2
0

More than 1 year has passed since last update.

GASからNotionのPage Propertyの内容を変更

Posted at

目的

  • GASからNotionのPage Propertyの内容を変更すること

本記事で紹介しないこと

  • NotionAPI取得方法
  • GASプロジェクトの作成方法
  • GASの書き方 ※そもそも、筆者は初めてGASを使用したので書き方に不慣れです
  • ページの追加・削除

環境

  • GASプロジェクト:2022-10-19 最終操作日
  • Notion-Version:2022-06-28

本記事で使用する題材

  • 筆者が日常で利用しているNotionのタスク管理データベース 図のようなものです
    Taskのテンプレート

内容

const ENDPOINT_CHANGE_STATUS_PAGE = "https://api.notion.com/v1/pages/";
const URL = ENDPOINT_CHANGE_STATUS_PAGE + getTaskId(task);
const NOTION_TOKEN = PropertiesService.getScriptProperties().getProperty("notion_token");

const payload = {
  properties: {
    Status:{ 
      id: '%5EOE%40',
      type: 'select',
      select: { 
        name: 'Doing', 
      } 
    }
  }
}
const options = {
  method : "PATCH",
  headers: notionHeader(NOTION_TOKEN),
  payload : JSON.stringify(payload),
}

UrlFetchApp.fetch(URL,options)

ENDPOINT_CHANGE_STATUS_PAGE

  • エンドポイントになります 
  • Databaseの情報を操作するわけではないので最後はpagesになってます

URL

  • fetchに渡すためのurlです 
  • エンドポイントの後にPropertyに操作を加えたいページのidを記述することで特定のページの操作を可能にします
  • 自分はgetTaskId(task)というメソッドを作って他のところでもid取得操作の再利用をしてます

getTaskId

  • APIを用いて取得したNotionのページObjectは以下のようなJSONで管理されています
  • 直下にあるidを取得してエンドポイントの末尾にくっつけます
  • プログラム的にはtask["id"]などで取得できます
{ 
  object: 'page',
  id: 'ここの値をエンドポイントの後ろにくっつける',
  created_time: '2022-10-18T14:02:00.000Z',
  last_edited_time: '2022-10-18T14:05:00.000Z',
  created_by: { object: 'user', id: '見せられないよ' },
  last_edited_by: { object: 'user', id: '見せられないよ' },
  cover: null,
  icon: null,
  parent: 
   { type: 'database_id',
     database_id: 'データベースのid' },
  archived: false,
  properties: {  },
  url: 'PageのURL' }
}

NOTION_TOKEN:

  • Notionのトークンです

payload:

  • 更新させたい内容をNotion ObjectのJSON形式で渡します
  • 今回はPageのproperty情報を更新したいので PageObjectの直下"properties"を操作します
  • propertyに使える項目は参考文献2にのってます今回はSelect property valuesを例にします
  • Statusの部分は自分でpropertyを作成したときの名前です日本語の場合はダブルクォーテーションで囲みます 
  • Statusの中に行くとselectがあり name color のoption情報が変更できます 
  • 変更する際には 対象:”変更後の値” color: "red" と書くことで情報の更新ができます

options

  • methodの値をPATCHにすることで情報の更新ができる
  • POSTなどだと失敗します

まとめ

  • Notaion property itemのリファレンスを見てpropertiesのJSONを組み立てる
  • JSONに送る際にmethodをPATCHにする

参考文献

  1. NotionDevelopers Update Page https://developers.notion.com/reference/patch-page (Access 2022-10-19).
  2. Notion property-item-objec https://developers.notion.com/reference/property-item-object (Access 2022-10-19).
2
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
2
0