Skip to content

Commit

Permalink
fix: 短い形式にも対応
Browse files Browse the repository at this point in the history
  • Loading branch information
Yamamoto1012 committed Nov 16, 2024
1 parent ad64d1f commit 8ca52e4
Showing 1 changed file with 31 additions and 15 deletions.
46 changes: 31 additions & 15 deletions pointRanking/src/commands/summarize/utils/fetchNotaionPage.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,54 +5,70 @@ const notion = useNotion().notion;
export async function fetchNotionPage(pageUrl: string): Promise<string> {
try {
// URLからページIDを抽出
const match = pageUrl.match(/([a-f0-9]{32}|[a-f0-9\-]{36})(?=\?|$)/);
const match = pageUrl.match(/([a-f0-9]{32}|[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})(?=\?|$)/);
console.log("マッチング結果:", match);
const rawPageId = match?.[0];

if (!rawPageId) {
throw new Error(`NotionのURLがありません: ${pageUrl}`);
throw new Error(`NotionのURLが不正です: ${pageUrl}`);
}

// ページIDをUUID形式に変換(必要な場合のみ)
const pageId =
rawPageId.includes("-") // すでにUUID形式か確認
? rawPageId
: rawPageId.replace(
: rawPageId.length === 32 // 短い形式の場合
? rawPageId.replace(
/([a-f0-9]{8})([a-f0-9]{4})([a-f0-9]{4})([a-f0-9]{4})([a-f0-9]{12})/,
"$1-$2-$3-$4-$5"
);
)
: null; // 不正な形式の場合はnull

if (!pageId.match(/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}/)) {
throw new Error(`${pageId}`);
console.log("ページID:", pageId);

if (!pageId || !pageId.match(/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}/)) {
throw new Error(`ページIDが不正です: ${pageId}`);
}

// ページの全ブロックを取得
// Notion APIでブロックリストを取得
const response = await notion.blocks.children.list({
block_id: pageId,
page_size: 100,
});

// ブロックから文字列を抽出して結合
console.log("APIレスポンス:", response);

if (!response || !response.results || response.results.length === 0) {
throw new Error(`指定されたページにコンテンツが存在しないか、APIのレスポンスが無効です: ${pageUrl}`);
}

// 各ブロックの内容を処理
const content = response.results
.map((block: any) => {
if (block.type === "paragraph" && block.paragraph.rich_text) {
return block.paragraph.rich_text
.map((text: any) => text.plain_text)
.join("");
const { type } = block;
const blockContent = block[type];

if (blockContent && blockContent.rich_text) {
const richText = blockContent.rich_text;
if (richText.length > 0) {
return richText.map((text: any) => text.plain_text).join("");
}
}
return "";
})
.filter((text) => text.length > 0)
.join("\n");

if (!content) {
throw new Error(`ページ内にコンテンツがありません: ${pageUrl}`);
throw new Error(`ページ内にコンテンツがありません: ${pageUrl}`);
}

return content;
} catch (error) {
console.error("エラー詳細:", error);
if (error instanceof Error) {
throw new Error(`${error.message}`);
throw new Error(`Failed to fetch Notion page (${pageUrl}): ${error.message}`);
}
throw new Error(`${pageUrl}`);
throw new Error(`不明なエラーが発生しました: ${pageUrl}`);
}
}

0 comments on commit 8ca52e4

Please sign in to comment.