見出し画像

iPhoneのショートカットからNotionのAPIをコールしてみた。そして見つけたクソ仕様。


やりたかったこと

iphoneのショートカットからNotionのAPIをコールしてメモ用のデータベースにメモをためていく。

できたもの

ショートカットを起動するとテキストが要求されて・・・

メモを入力して完了を押すとNotionに送信。

1行目がタイトル、2行目以降が本文に書き込まれる。

ロジック

とりあえずPythonで組んでから、ショートカットに書き起こすことにした。

import requests
import json


# 定数を定義
TOKEN = "secret_XXXXXXXXXXXXXXXXXXXXXXXX"
AUTHORIZATION = "Bearer " + TOKEN
DATABASE_ID = "YYYYYYYYYYYYYYYYYYYYYYYYY"
NOTION_VERSION = "2022-06-28"
URL = "https://api.notion.com/v1/pages"


# テキストを取得
input_text = """ここがタイトル
改行するとここから本文
テキスト

ああああ"""

# text_list = input_text.split("\r\n")
text_list = input_text.split("\n")

title_text = text_list[0]
body_text = "\n".join(text_list[1:])

print(title_text)
print(body_text)


# APIをコール
url = URL
header = {
    'Authorization': AUTHORIZATION,
    'Content-Type': 'application/json',
    'Notion-Version': NOTION_VERSION,
}
data = json.dumps({
  "parent": { "database_id": DATABASE_ID },
  "properties": {
    "Title": {
      "id": "title",
      "type": "title",
      "title": [
        {
          "type": "text",
          "text": {
            "content": title_text,
          },
         },
      ]
    }
  },
  "children": [
      {
        "paragraph": {
          "rich_text": [
            {
              "text": {
                "content": body_text
              }
            }
          ]
        }
      },
  ]
})

response = requests.post(url, headers=header, data=data)
print(response.text)

実装

クソ仕様

リクエストのbody(data)の深い階層に変数を設定すると、それまで入力していた階層情報が消える
※実際の処理では残っているので動作はする

上の画像の本文を要求の値の部分は、pythonでいうところの以下のデータ構造になるようにポチポチと入力していたのですが、変数を設定するとそれまで入力していた情報が消えます。
= 変数を削除するとkey : valueの入力に戻ってしまう

data = json.dumps({
  "parent": { "database_id": DATABASE_ID },
  "properties": {
    "Title": {
      "id": "title",
      "type": "title",
      "title": [
        {
          "type": "text",
          "text": {
            "content": title_text,
          },
         },
      ]
    }
  },
  "children": [
      {
        "paragraph": {
          "rich_text": [
            {
              "text": {
                "content": input_text
              }
            }
          ]
        }
      },
  ]
})

クソクソクソクソーーーーーーーー

ダウンロードはこちらからどうぞ

https://www.icloud.com/shortcuts/793a55f17a274612b9b9dfc9e9842cc8

※作成したデータベースのタイトル列を「Title」にしないと動かないかもしれません。
※自身のtokenとdatabase_idに書き換えてください。

参考文献

APIの初期設定など

POSTするデータは公式ドキュメント




それでは、さようなら。




クソクソクソクソーーーーーーーー

この記事が気に入ったらサポートをしてみませんか?