You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Notion API获取show_original类型Rollup的Select值时遇错求助

解决Notion Rollup属性(Select类型)的获取问题

出现Invalid relations found in rollup错误的原因是:notion.pages.properties.retrieve接口不适用于获取Rollup类型属性的具体值——Rollup属性依赖关联页面的数据,直接调用该接口会触发校验失败。

以下是两种正确获取Select类型Rollup值的方法:

方式一:直接从页面查询结果中提取

当你通过notion.pages.retrieve获取页面详情时,返回的page.properties里已经包含Rollup的计算结果,无需额外调用属性检索接口。示例代码如下:

const rollupName = 'foo';
const rollupProp = page.properties[rollupName].rollup;

// 处理show_original函数对应的array类型Rollup结果
if (rollupProp.type === 'array') {
  const selectValues = rollupProp.array.map(item => {
    // 关联页面的属性类型为select,提取选项名称或ID
    if (item.type === 'select') {
      return item.select.name; // 如需选项ID可替换为item.select.id
    }
    return null;
  }).filter(val => val !== null);
  
  console.log(selectValues);
}

方式二:通过数据库查询接口获取

如果页面属于某个数据库,可使用notion.databases.query接口定位目标页面后提取Rollup值:

const queryResult = await notion.databases.query({
  database_id: '你的数据库ID',
  filter: {
    property: 'ID', // 或使用页面标题等唯一标识属性
    rich_text: {
      equals: page.id // 若用标题则替换为页面标题文本
    }
  }
});

const targetPage = queryResult.results[0];
const rollupProp = targetPage.properties[rollupName].rollup;

// 提取Select类型值
if (rollupProp.type === 'array') {
  const selectValues = rollupProp.array.map(item => item.select?.name).filter(Boolean);
  console.log(selectValues);
}

关键注意事项

  • Rollup属性的type由其使用的函数决定,你当前用的show_original对应array类型,数组内每个元素匹配关联页面的Select属性结构。
  • 避免使用pages.properties.retrieve接口获取Rollup属性,该接口更适合处理文本、数字等不依赖关联数据的独立属性类型。

内容的提问来源于stack exchange,提问作者Mira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 02:30:50