2023年12月21日 星期四

Google Apps Script Web App 發布後網址的問題

2023年12月21日 星期四

今天一位朋友問到 HTML5 FUN 單字高手是否能記錄成績?成績記錄的功能,早期是用 PHP ,然後程式放在學校的 web server,後來因為沒有管學校的伺服器,就改用 Google Apps Script ,資料則是儲存到 Google Drive 的試算表中,此部份在 2014 年的這篇文章中有記錄:

當時HTML5 FUN 「單字高手」支援 PHP 的成績記錄,而 「聽音辨字」及「注音高手」可以支援以 scoreLogger 來記錄成績。

今天試了一下,scoreLogger 除了文章中的「程式庫」(現在 Google Apps Script 新編輯器改稱「資料庫」)的「專案金鑰」已經不同:

  • 1uWS1QYrEIYtWwdb6dvkAJYYa6KQqxWmfD2xxv2L88iYRo4VQSU1scSGP

還有新版編輯器的配置、名稱有異,基本上,功能是是沒有問題的。

大問題來了!這個大問題在前一陣子改別的 Google Apps Script 時,也是浪費了我很多時間才發現不是我的錯。

我們將 Google Apps Script 以 Web App (網頁應用程式)「部署」以後,會得到一個類似這樣格式的網址,:

  • https://script.google.com/macros/s/aaabbbcccdddfffgg/exec

因為我的程式是「部署」為任何人都可以執行,這個網址(前面這個是亂編的 XD )如果是在「無痕視窗」,或是只有用一個 Google 帳號登入的瀏覽器,都可以正常執行。不幸的,如果是用多個 Google 帳號登入下開啟,網址會被 Google 改為類似這樣:

  • https://script.google.com/macros/u/2/s/aaabbbcccdddfffgg/exec

看得出來嗎?被硬生生地加了料,此例加了「/u/2」,這樣一來,因為網址已經不是原來 Web App 的網址,肯定出錯的!

我會發現是因為前一陣子,在多個 Google 帳號登入的狀況下,想用另一個帳號在試算表中寫 Google Apps Script 時,會出現錯誤,開不了編輯器,必須用這樣的方法之一:

  • 開啟 https://script.google.com/ ,然後才切換帳號使用。
  • 在「無痕視窗」中,以要用的 Google 帳號登入後使用(但絕對不要再用別的 Google 帳號登入了)。

原來這個問題已經存在好多年了,只是我以前都只用一個 Google 帳號,所以才沒發現。來看看一堆的在討論區中哀嚎:

自動「亂改」網址,這對開發者實在困擾啊!因為我們無法預期開網址的人,會不會用多帳號登入。

先記錄一下,我玩了一點的小心得,透過類似 CorsProxy 的 CORS 代理伺服器來開簡易的 Web App,像前亂編的例子,就改用:

  • https://corsproxy.io/?https://script.google.com/macros/s/aaabbbcccdddfffgg/exec

因為是透過代理伺服器處理過,Google 端會當匿名使用(相當於無痕視窗中開啟),所以不會加多識別多帳號用的「/u/?」,然後就可以正常進行成績登錄。當然囉!得是像我記錄成績的程式,主要是接收資料,不會有複雜回應的,問題較少。

遇到多年不清除的臭蟲,看來只能自求多福,想別的方法了。目前的備案就是透過 Google Form + 試算表了。缺點是 HTML5 FUN 的程式又得配合著改,等完成再記錄了。

相關連結


沒有留言:

張貼留言

 
雄::gsyan © 2009. Design by Pocket