為什麼會出現假成功?

使用 fetch 的 no-cors 模式時,前端無法讀取實際回應內容。如果程式只把「沒有拋出網路錯誤」當成成功,即使後端要求登入、執行失敗或沒有寫入資料,畫面仍可能顯示完成。

應該逐層確認什麼?

  1. 瀏覽器是否真的只送出一次 POST。
  2. Apps Script 是否收到相同的 requestToken。
  3. Sheet 是否完成寫入並產生 requestId。
  4. 狀態查詢是否回傳 ok=true、state=saved 與非空 requestId。
  5. 前端是否只在上述條件成立時重置表單。

常見後端原因

  • Web App 存取權限或執行帳號不正確。
  • Spreadsheet 身分或工作表名稱錯誤。
  • 表頭變更造成欄位對應失敗。
  • 狀態在 Sheet 寫入前就被標記為成功。
  • 通知寄送阻塞了 saved 狀態。

安全原則:畫面成功必須由後端已保存狀態證明,而不是依賴 no-cors POST 的完成狀態。

逾時時不要自動重送

狀態查詢逾時時,後端可能仍在處理。前端應保留 requestToken、顯示人工確認方式,且不得自動再送一次 POST,以免建立重複案件。

需要檢查現有表單?

請提供錯誤時間、畫面狀態與流程說明,不要傳送密碼或 Token。

申請流程診斷Apps Script 維護