目的
- GASからNotionのPage Propertyの内容を変更すること
本記事で紹介しないこと
- NotionAPI取得方法
- GASプロジェクトの作成方法
- GASの書き方 ※そもそも、筆者は初めてGASを使用したので書き方に不慣れです
- ページの追加・削除
環境
- GASプロジェクト:2022-10-19 最終操作日
- Notion-Version:2022-06-28
本記事で使用する題材
内容
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にする
参考文献
- NotionDevelopers Update Page https://developers.notion.com/reference/patch-page (Access 2022-10-19).
- Notion property-item-objec https://developers.notion.com/reference/property-item-object (Access 2022-10-19).