# 故障排除 (https://21notion.com/zh-TW/docs/faq/troubleshooting)

import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
import { Steps, Step } from 'fumadocs-ui/components/steps';
import { Card, Cards } from 'fumadocs-ui/components/card';

遇到問題？本頁面收錄了 FLO.W 模板的常見故障及解決方案。

<Cards>
  <Card title="網頁剪藏問題" href="/docs/basic-feature/web-clipper#faq" />

  <Card title="技術支援" href="/docs/faq/support" />
</Cards>

## 誤刪內容恢復

不小心刪錯了東西？別慌，按照下面的方法可以找回來。

<Accordions type="single">
  <Accordion title="剛剛誤刪，還沒做其他操作" id="undo">
    最簡單的方法：立即按快捷鍵撤銷。

    * **Windows**：`Ctrl + Z`
    * **Mac**：`Cmd + Z`

    可以連續按多次，逐步撤回之前的操作。

    **注意**：關閉頁面或重新整理後，撤銷記錄會清空，這個方法就失效了。
  </Accordion>

  <Accordion title="刪了頁面上的某個模組（如資料庫視圖）" id="restore-block">
    如果你不小心刪掉了頁面上的某個模組（比如一個資料庫視圖），但頁面本身還在——別擔心，你刪掉的只是頁面上的「展示窗口」，資料庫本身和裡面的資料都還在。

    **方法一：透過頁面歷史恢復**

    1. 點擊頁面右上角的 `···` 選單
    2. 選擇「頁面歷史」
    3. 在左側時間軸中找到刪除之前的版本
    4. 點擊「恢復」

    **方法二：從資料庫頁面重新嵌入**

    如果頁面歷史無法恢復，可以手動把資料庫重新放回來。FLO.W 的所有原始資料庫都集中存放在導航列的「資料庫」頁面中，只需要找到它、複製連結、貼回來即可：

    1. 打開 FLO.W 頂部導航列，進入「資料庫」頁面
    2. 找到你需要的資料庫（如「打卡動態」）
    3. 進入該資料庫，使用 `Ctrl+L`（Mac：`Cmd+L`）複製連結
    4. 回到原來的頁面，貼上連結，建立鏡像視圖
    5. 根據需要調整資料庫設定（佈局、屬性可見性等）
  </Accordion>

  <Accordion title="刪了整個頁面" id="restore-page">
    Notion 刪除的頁面會進入「回收站」，30 天內可以找回：

    1. 點擊左側邊欄底部的「回收站」
    2. 搜尋被刪除的頁面名稱
    3. 找到後點擊「恢復」

    **注意**：回收站內容有保留期限，請儘早恢復。
  </Accordion>
</Accordions>

## 模板啟動問題

<Accordions type="single">
  <Accordion title="無法啟動資料庫的模板怎麼辦？" id="template-activation">
    如果您在資料庫中建立筆記時遇到模板無法啟動的問題：

    ![模板激活問題錯誤提示界面](https://pic.eryinote.com/PicGo/202509122357558.png)

    **解決步驟**

    1. 點擊資料庫的視圖標題
    2. 打開【源資料庫】
    3. 使用 `Ctrl+L`（Windows）或 `Cmd+L`（Mac）複製【源資料庫】的連結
    4. 將複製的連結貼上到出問題的資料庫頁面中
    5. 建立一個新的鏡像視圖
    6. 測試新鏡像視圖的【模板】是否能正常啟動

    **如果問題仍然存在**

    * 請在飛書群新開一個話題提問
    * 提供具體的錯誤截圖和操作步驟
    * 我們會協助您快速解決問題

    **預防措施**

    * 避免隨意刪除或移動源資料庫
    * 保持模板結構的完整性
  </Accordion>

  <Accordion title="資料庫模板沒有成功觸發" id="template-trigger">
    在實際操作過程中，當你建立一個新的頁面，卻發現頁面的樣子與我影片中展現的樣子不一樣，原因可能是你沒有成功啟動模板。這個時候你可以點擊頁面下方的這個模板按鈕，稍等片刻就可以重新啟動模板了。

    ![資料庫頁面下方的模板激活按鈕](https://pic.eryinote.com/PicGo/202509130147697.png)

    但有時候你可能會發現頁面中並沒有類似的模板按鈕，原因在於，這個頁面已經不是「空白頁面」了，只有「**沒有任何內容的空白頁面**」才會出現模板按鈕。

    在這種情況下，你可以點擊頁面，全選所有內容（包括空白的段落），然後執行刪除操作，就可以將頁面還原為「空白頁面」，然後模板按鈕就會出現了。
  </Accordion>
</Accordions>

## 已知錯誤修復

由於 FLO.W 系統的體量過於龐大，因此有可能在各種細節角落存在一些錯誤，本章節即為修復這些錯誤而建。

<Accordions type="single">
  <Accordion title="點擊「完成」按鈕無法改變閱讀狀態" id="clipper-button-fix">
    > **適用範圍**：2025 年 11 月 3 日之前複製模板的使用者。之後複製的模板已修復此問題。

    **問題表現**

    在剪藏文章中，點擊【完成】按鈕，無法將閱讀狀態改為【已完成】

    ![剪藏文章的完成字段狀態問題](https://pic.eryinote.com/PicGo/202511022055293.png)

    **解決方法**

    點擊【完成】這個欄位，會彈出如下提示

    ![完成字段菜單操作選項列表](https://pic.eryinote.com/PicGo/202511022056791.png)

    然後再點擊【編輯屬性 - 編輯自動化】，然後點擊出現錯誤的地方

    ![自動化編輯界面設置錯誤提示](https://pic.eryinote.com/PicGo/202511022057911.png)

    把【已刪除選項】改成【已完成】

    ![自動化中將已刪除選項改為已完成](https://pic.eryinote.com/PicGo/202511022058713.png)

    最後點擊儲存按鈕即可

    ![自動化配置完成後的保存確認](https://pic.eryinote.com/PicGo/202511022058209.png)
  </Accordion>

  <Accordion title="習慣熱力圖在 11/12 月顯示錯位" id="habit-heatmap-fix">
    > **適用範圍**：2025 年 11 月 3 日之前複製模板的使用者。之後複製的模板已修復此問題。

    **問題表現**

    當月份來到 11 月或者 12 月的時候，熱力圖的顯示就會無法正確對齊，如下圖所示：

    ![習慣熱力圖在十一十二月顯示錯位](https://pic.eryinote.com/PicGo/202511022038686.jpeg)

    **解決方法**

    複製下面這段程式碼，然後覆蓋原有的程式碼即可

    ```
    /* ========== 打卡統計看板 (基於當前月份) - 集成習慣分類和月度目標 ========== */
    lets(
        /* --- 核心變數 --- */
        boardReferenceDate, now(), /* 看板始終基於當前日期和時間 */
        currentYear, boardReferenceDate.formatDate("YYYY"), /* 當前年份字串 */
        currentMonth, boardReferenceDate.formatDate("MM"), /* 當前月份字串 */
        boardYearMonth, currentYear + "/" + currentMonth, /* 當前年月，例如 "2025/05" */

        /* --- 今日打卡狀態 --- */
        todayDateText, now().formatDate("YYYY/MM/DD"),
        allRecords, prop("打卡记录"), /* 所有打卡記錄 */
        isCheckedInToday, allRecords.filter(current.prop("日期").formatDate("YYYY/MM/DD") == todayDateText).length() > 0,
        todayCheckInStatusText, if(isCheckedInToday, "✅ 今天已打卡", "❌ 今天未打卡"),

        habitCategory, prop("习惯分类"), /* 獲取習慣分類 */
        monthlyLimitTarget, prop("目标/上限"), /* 獲取每月上限或下限目標值 */

        /* 根據習慣分類調整標記和顏色 */
        triggerMark, if(habitCategory == "好习惯", "✓", "x"),
        userDefinedColorForHabit, prop("习惯颜色"),
        triggerColor, if(
            habitCategory == "好习惯",
            "green",
            empty(userDefinedColorForHabit) ? "red" : userDefinedColorForHabit
        ),

        /* --- 1. 計算當月觸發/完成次數 --- */
        /* allRecords 已在上方定義 */
        monthlyTriggers,
        allRecords.filter(
            current.prop("日期").formatDate("YYYY/MM") == boardYearMonth
        ).length(),

        /* --- 2. 構建第一行顯示的習慣資訊字串 (對好壞習慣均顯示) --- */
        habitInfo,
            lets(
                baseText, format("本月 ") + monthlyTriggers + " 次",
                actualSuffixText, /* 初始化後綴文字 */
                    if(empty(monthlyLimitTarget),
                        "", /* 如果沒有設定目標/上限，則後綴為空 */
                        if(habitCategory == "好习惯",
                            lets(
                                neededForTarget, monthlyLimitTarget - monthlyTriggers,
                                if(neededForTarget <= 0,
                                    "｜已達標",
                                    "｜還需 " + format(neededForTarget) + " 次"
                                )
                            ),
                            /* 當為壞習慣時 */
                            lets(
                                remainingCount, monthlyLimitTarget - monthlyTriggers,
                                if(remainingCount >= 0,
                                    "｜剩餘 " + format(remainingCount) + " 次",
                                    "｜已超額 " + format(abs(remainingCount)) + " 次"
                                )
                            )
                        )
                    ),
                (baseText + actualSuffixText).style("b", "u") /* 組合並套用樣式 */
            ),

        /* --- 3. 月份和星期表頭 --- */
       monthHeader,
        lets(
            monthNum, boardReferenceDate.formatDate("MM").toNumber(),
            monthText, if(monthNum >= 11,
                boardReferenceDate.formatDate("MMM"),  /* 11、12月用縮寫 */
                boardReferenceDate.formatDate("MM") + "月"  /* 1-10月用數字 */
            ),
            monthText.style(
                triggerColor + "_background", "c", "b", triggerColor
            )
        ),

        dayAbbreviations, ["M", "T", "W", "T", "F", "S", "S"],
        weekHeader, dayAbbreviations.map(
            lets(
                dayAbbr, current,
                dayIndex, index,
                systemToday, now().day(),
                isToday, (systemToday == 0 && dayIndex == 6) || (systemToday != 0 && systemToday - 1 == dayIndex),
                dayAbbr.style(
                    triggerColor + "_background", "c", "b",
                    isToday ? ((triggerColor == "yellow" || triggerColor == "pink" || triggerColor == "green" || triggerColor == "gray") ? "brown" : "white") : triggerColor
                )
            )
        ).join(" "),
        fullHeader, monthHeader + " " + weekHeader,

        /* --- 4. 每週打卡熱圖 --- */
        firstDayOfBoardMonth, parseDate(currentYear + "-" + currentMonth),
        startDayOfWeekForBoardMonth, firstDayOfBoardMonth.day(),
        week1StartDate, firstDayOfBoardMonth.dateSubtract((startDayOfWeekForBoardMonth + 6) % 7, "days"),
        weekDaysOffsets, [0, 1, 2, 3, 4, 5, 6],
        weekOffsetsForMap, [0, 7, 14, 21, 28, 35],

        allWeekViewsRendered, weekOffsetsForMap.map(
            lets(
                daysToAdd, current,
                currentWeekStartDate, week1StartDate.dateAdd(daysToAdd, "days"),
                currentWeekIndex, index,
                isThisWeekPotentiallyRelevant, currentWeekStartDate.formatDate("YYYY/MM") == boardYearMonth || currentWeekStartDate.dateAdd(6, "days").formatDate("YYYY/MM") == boardYearMonth,
                displayThisWeek, (currentWeekIndex < 5) || (currentWeekIndex == 5 && isThisWeekPotentiallyRelevant),

                weekViewContent, displayThisWeek ? (
                    (currentWeekStartDate.formatDate("WW") + "周").style(
                        currentWeekStartDate.formatDate("YYYY/WW") == now().formatDate("YYYY/WW") ? triggerColor + "_background" : "",
                        "c", "b", triggerColor
                    ) + " " +
                    weekDaysOffsets.map(
                        lets(
                            dayOffset, current,
                            currentDayInGrid, currentWeekStartDate.dateAdd(dayOffset, "days"),
                            isCurrentDisplayMonth, currentDayInGrid.formatDate("YYYY/MM") == boardYearMonth,
                            dailyTriggersCount, isCurrentDisplayMonth ?
                                allRecords.filter(
                                    current.prop("日期").formatDate("YYYY/MM/DD") == currentDayInGrid.formatDate("YYYY/MM/DD")
                                ).length() : 0,
                            isActualToday, currentDayInGrid.formatDate("YYYY/MM/DD") == todayDateText, /* 使用 todayDateText 比較 */

                            (dailyTriggersCount > 0 ? triggerMark : (isCurrentDisplayMonth ? "·" : " ")).style(
                                dailyTriggersCount > 0 ? triggerColor + "_background" : (isActualToday && isCurrentDisplayMonth ? "blue_background" : ""),
                                "c", "b",
                                dailyTriggersCount > 0 ? triggerColor : (isCurrentDisplayMonth ? (isActualToday ? "white" : "gray") : "")
                            )
                        )
                    ).join(" ")
                ) : "",
                weekViewContent
            )
        ).filter(current != "").join("\n"),

        /* --- 構建本月目標/上限的文字行 (for summary) --- */
        monthlyTargetDisplayLine,
            if(empty(monthlyLimitTarget),
                "", /* 如果目標/上限為空，則此行為空 */
                if(habitCategory == "好习惯",
                    format("本月目標 ") + format(monthlyLimitTarget) + " 次",
                    format("本月上限 ") + format(monthlyLimitTarget) + " 次"
                )
            ),

        /* --- 計算上個月和年度統計 (for summary) --- */
        dateForLastMonth, boardReferenceDate.dateSubtract(1, "months"),
        lastMonthYearMonth, dateForLastMonth.formatDate("YYYY/MM"),
        lastMonthTriggers, allRecords.filter(
            current.prop("日期").formatDate("YYYY/MM") == lastMonthYearMonth
        ).length(),

        percentageChangeText, /* 調整 "從0增加" 的措辭 */
            if(lastMonthTriggers == 0,
                /* 當上個月為0次時 */
                if(monthlyTriggers > 0,
                    "本月增加 " + format(monthlyTriggers) + " 次", /* 修正：去掉重複的 "上個月 0" */
                    "無變化" /* 如果本月也為0次，則為無變化 */
                ),
                /* 當上個月不為0次時，計算百分比 */
                lets(
                    diff, monthlyTriggers - lastMonthTriggers,
                    percentage, round(diff / lastMonthTriggers * 100),
                    if(percentage == 0,
                        "無變化",
                        if(percentage > 0,
                            "增加 " + format(percentage) + "%",
                            "下降 " + format(abs(percentage)) + "%"
                        )
                    )
                )
            ),
        lastMonthSummary, "上個月 " + format(lastMonthTriggers) + " 次｜" + percentageChangeText,

        thisYearTriggers, allRecords.filter(
            current.prop("日期").formatDate("YYYY") == currentYear
        ).length(),
        thisYearSummary, "今年總計 " + format(thisYearTriggers) + " 次",

        /* --- 5. 最終拼接所有部分 --- */
        finalOutput,
        todayCheckInStatusText + "\n" +
        habitInfo + "\n" +
        fullHeader + "\n" +
        allWeekViewsRendered + "\n\n" +
        if(empty(monthlyTargetDisplayLine), "", monthlyTargetDisplayLine + "\n") +
        lastMonthSummary + "\n" +
        thisYearSummary + "\n",
        finalOutput
    )

    ```
  </Accordion>

  <Accordion title="「關聯欄位最後編輯時間」顯示錯誤" id="last-edited-time-fix">
    > **適用範圍**：2025 年 11 月 2 日之前複製模板的使用者。之後複製的模板已修復此問題。

    **問題表現**

    打開剪藏模組中的文章，找到【關聯欄位最後編輯時間】這個欄位，點擊之後發現如下圖所示的錯誤：

    ![關聯字段編輯時間公式錯誤代碼](https://pic.eryinote.com/PicGo/202511021714058.png)

    **解決方法**

    複製以下程式碼，然後完整覆蓋即可

    ```
    lets(
    	project,prop("关联项目").map(current.prop("上次编辑时间")),
    	task,prop("关联任务").map(current.prop("上次编辑时间")),
    	extract,prop("关联摘录").map(current.prop("Last Edited Time")),
    	author,prop("出自").map(current.prop("Last Edited Time")),
    	category,prop("书单分类").map(current.prop("Last Edited Time")),
    	subArea,prop("次级领域").map(current.prop("Last Edited Time")),
    	note,prop("关联笔记").map(current.prop("上次编辑时间")),
    	Area,prop("一级领域").map(current.prop("Last Edited Time")),
    	content,prop("Last Edited Time"),

    	[Area,note,subArea,category,author,author,extract,task,project,content].flat().unique().sort().reverse().first()
    )

    ```

    這次改動不影響任何功能，只是刪去了一段無用的程式碼。
  </Accordion>

  <Accordion title="點擊「主頁」按鈕跳轉到錯誤位置" id="homepage-nav-fix">
    > **適用範圍**：2025 年 9 月 14 日之前複製模板的使用者。之後複製的模板已修復此問題。

    **問題表現**

    在某些情況下，如果你打開資料庫，點擊頂部的【主頁】按鈕

    <img src="https://pic.eryinote.com/PicGo/202509150056189.png" alt="主頁按鈕" />

    卻跳轉到了網頁的某個地方

    <img src="https://pic.eryinote.com/PicGo/202509150057548.png" alt="跳轉錯誤" />

    **解決方法**

    **方法 1：修復連結**

    <Steps>
      <Step>
        進入你的模板主頁，然後使用快捷鍵 Ctrl+L（Mac 使用者請使用 Cmd+L），複製主頁連結

        <img src="https://pic.eryinote.com/PicGo/202509150059166.png" alt="複製主頁連結" />
      </Step>

      <Step>
        回到你出現問題的資料庫頁面，然後編輯【主頁】按鈕的超連結

        1. 滑鼠懸停在【主頁】兩個字上
        2. 點擊【編輯】按鈕，這個時候會彈出一個框

        <img src="https://pic.eryinote.com/PicGo/202509150100500.png" alt="編輯主頁按鈕" />
      </Step>

      <Step>
        在【頁面或 URL】的輸入框內，貼上步驟 1 獲得的連結，貼上之後按 Enter，然後再點擊【主頁】按鈕，就可以跳轉到正確的主頁了。

        <img src="https://pic.eryinote.com/PicGo/202509150102363.png" alt="貼上連結" />
      </Step>
    </Steps>

    **方法 2：刪除導航**

    鑑於這個位置的導航使用頻率比較低，因此你也可以直接把整串導航刪掉，一般情況下不會影響使用。
  </Accordion>

  <Accordion title="願望清單「加入已購買」按鈕報錯" id="wishlist-button-fix">
    > **適用範圍**：2025 年 9 月 14 日之前複製模板的使用者。之後複製的模板已修復此問題。

    **問題表現**

    在【生活 - 願望】模組中，存在一個【加入已購買】的按鈕

    <img src="https://pic.eryinote.com/PicGo/202509150118996.png" alt="加入已購買按鈕" />

    如果你點擊這個按鈕出現錯誤，可能是個這個按鈕中的某個步驟出現了錯誤

    <img src="https://pic.eryinote.com/PicGo/202509150124985.png" alt="按鈕錯誤" />

    **解決辦法**

    按照下圖所示方法，重新編輯一下這個按鈕即可

    <img src="https://pic.eryinote.com/PicGo/202509150131521.png" alt="重新編輯按鈕" />
  </Accordion>
</Accordions>

***

## Notion 打不開？

如果 Notion 網站或用戶端突然無法存取，可能是 Notion 官方服務出了問題，不是你的網路或模板的原因。

* 造訪 [Notion 官方狀態頁面](https://www.notion-status.com/) 查看當前服務是否正常
* 如果不是官方故障，可以參考 [Notion 存取加速方案](/docs/notion-download#notion-access-speed)

***

**問題沒解決？** 加入 [飛書交流群](/docs/faq/support#join-feishu-group) 獲取人工支援。
