1

我正在尝试通过 REST API 访问我的 Notion 中的单个数据库。

在 Notion 中查询或列出我的数据库时,我只收到预期属性的一个子集。

正如您在最后一个屏幕截图中看到的那样,我访问的数据库中有 23 个属性。所以有 7 个没有出现,因为我在调用 LIST DB REST API 时看到了 16 个(第一个屏幕截图)。 知道为什么这 7 个属性没有出现吗?

   class Test:
    def __init__(self):
        self.notion = None
        self.databases = {}
        self.pageIds = []
        self.pages = {}

    def initialize(self):
        #NOTION_TOKEN = os.getenv("NOTION_TOKEN", "")
        with open('Notion_Config.YAML') as f:
            data = yaml.load(f, Loader=yaml.FullLoader)
            print(data)
        NOTION_TOKEN = data["Token"]

        while NOTION_TOKEN == "":
            print("NOTION_TOKEN not found.")
            NOTION_TOKEN = input("Enter your integration token: ").strip()

        self.notion = Client(auth=NOTION_TOKEN)

    def list_db(self):
        results = self.notion.databases.list()
        print("Listing databases: ")
        for item in results["results"]:
            print(item["title"][0]["plain_text"])
            self.databases.update({item["title"][0]["plain_text"] : item["id"]})

    def query_db(self, database_name):
        #while db["more"] == True:
        db = self.notion.databases.query(database_id=self.databases.get(database_name))
        for item in db["results"]:
            print(item)
            self.pageIds.append(item["id"])

    def query_pages(self):
        for item in self.pageIds:
            page = self.notion.pages.retrieve(page_id=item)
            print(page)

调用 list_db。可以看到检索到的属性数是 16 调用 list_db。 可以看到检索到的属性数是 16

调用 query_db。您可以看到为第一页检索到的属性数为 14 调用 query_db。 可以看到检索到的属性数是 14

此屏幕截图显示了我的数据库的属性列表

此屏幕截图显示了我的数据库的属性列表

4

1 回答 1

3

在概念中显示数据库属性的最终屏幕截图有 6 个箭头在此处输入图像描述。这 6 个属性表示指向数据库的关系属性。

  • 相关项目
  • 购物清单
  • 依赖于(任务)
  • 相关人员/公司
  • 资源
  • 子任务

其中 2 个关系属性是自关系,这意味着它们指向它们所在的同一个数据库。

  • 子任务
  • 依赖于(任务)

对 Notion REST API 的调用只能访问您已授予权限的数据库。由于您只提供了对该单一数据库的访问权限,因此您应该只看到自关系属性。

放大镜在此处输入图像描述代表配方特性。如果任何公式属性使用您的 Notion API 集成无权访问的关系属性,那么您也将无法看到这些。

  • 项目状态
  • 采购状态
  • 费用

在数据库中查询页面时,您可能只会收到页面具有非空值的属性。

于 2021-06-10T01:24:18.603 回答