前言
技術架構
AppSheet: 負責掃描條碼(ISBN)並觸發自動化。 Google Apps Script (GAS): 作為中繼站,接收 ISBN、向 Google API 請求資料,並處理回傳格式。 Google Books API: 資料來源。
重難點解析(這部分是 Blog 的精華)
坑一:地理位置限制造成的 403 錯誤
問題現象:同一串 URL 在瀏覽器直接打開看得到資料,但在 GAS 執行時卻噴出 403 Forbidden,錯誤訊息為 "Cannot determine user location for geographically restricted operation"。 原因:Google 伺服器發出請求時沒有固定地理位置,而部分書籍(尤其是繁中書)有區域版權限制。 解決方法:在 API 請求網址後方加上 &country=TW (或所在地代碼),強制指定查詢區域。
坑二:AppSheet 類型轉換失敗 (Schema Translation Error)
問題現象:Failed App Script type translation: Schema has more than one column but no object was returned。 原因:你在 AppSheet 設定了要接收一個「物件 (Object)」,但你的 GAS 卻回傳了單純的「字串」或格式不符。 解決方法:確保 GAS 最後的 return 是一個用大括號 {} 包起來的 JSON 物件,且名稱(Key)必須與 AppSheet 的 Specific type 設定完全一致。
坑三:找不到腳本專案 (Invalid Argument)
問題現象:在 AppSheet 選取 GAS 檔案時出現 INVALID_ARGUMENT 或找不到函數。 原因:Google 帳號預設關閉了外部 API 存取腳本的權限。 解決方法:前往 Google Apps Script Settings 將 「Google Apps Script API」 設定為 ON。
坑四:ISBN 格式不統一
問題現象:掃描出來的 ISBN 有時帶橫線(978-626...),導致 API 搜尋失敗。 解決方法:在 GAS 中使用正規表示式 replace(/\D/g, "") 先將輸入內容純化為數字。
最終完美版程式碼
結語
如果要寫在 Blog 裡,關於「開啟 API」與「建立腳本」的正確引導應該如下:
如何正確建立與授權腳本?(Blog 更新建議)
1. 使用 script.new 建立獨立腳本 (Standalone Script)
正確做法:在瀏覽器輸入 script.new 。這會直接幫你建立一個獨立的 Apps Script 專案。這對 AppSheet 來說最容易找到,且管理最方便。
2. 開啟 Google Apps Script API 權限
點擊左側選單最下方的 「設定」(Settings)(圖示是一個齒輪 ⚙️)。 找到 「Google Apps Script API」 區塊。 將開關切換為 「開啟」(ON)。 註:如果這裡沒開啟,AppSheet 在選取檔案時會出現
為什麼推薦使用 script.new?
搜尋效率:AppSheet 的檔案選擇器對於「獨立腳本」的搜尋支援度更高。 權限獨立:獨立腳本不依賴特定試算表,如果你以後想把這個書庫功能移到別的 App 或別的表格,腳本不需要重新搬家。
整理後的 Blog 偵錯章節:
「明明寫了腳本,AppSheet 卻找不到?」
請確保你是透過 script.new 建立的「獨立專案」。
檢查 Google Apps Script 設定頁面,確認 API 開關已開啟。
務必點擊腳本編輯器上方的「儲存」磁碟圖示。






沒有留言:
張貼留言