Gg / Google Apps Script – 程式被封鎖,沒有進階選項

前幾篇關於GAS的文章裡面有提到

我的個人Google帳號所創建的script

在執行的時候會直接被google封鎖

而不是出現一般在網路上常看見的:因為程式未經認證,跳出一個警告視窗,但仍可以用進階選項的方式來執行

那時候有猜測是不是因為我使用GCP(Google Clould Platform)的關係

在這之前,從網路上搜尋很久都沒找到解決方案

或者是用英文關鍵字查詢,因為都是英文,也沒辦法很仔細去尋找跟細看內容

都是找到類似的問題,但是並沒有解決方法

後來,也曾經詢問google客服

客服說這不是他們的服務項目,仍然幫我找了很多資料,之後還會詢問問題是否解決了

最後還提供了google IssueTracker讓我上去發問,看看google內部人員能不能幫忙回答

只是這個就要用英文了,所以用很破的英文+google翻譯來描述問題

” Google apps script – Authorization Required. But I don’t get an option for the advanced window.”

後來有一個人一直詢問細節,要我提供更詳細的說明

我也嘗試不斷說明,跟截圖

在我打算直接錄影demo流程的時候

有別的人回覆說這個已經是很久的問題,只是google沒有去修正

貼了另一個IssueTracker的文章說#76的回應內容可以解決

我看了其他回應,在#145提了3個方式,其中1)就是#76的方法

#150有提到#145方法1)的詳細步驟

Here’s what I did in detail:

  1. Go to https://console.cloud.google.com/cloud-resource-manager and click + CREATE PROJECT
  2. Set project name and click CREATE. Wait for it to be created.
  3. Click on the  menu button upper left >> APIs & Services >> OAuth consent screen
  4. Make sure that your new project is selected upper left to the right of Google Cloud Platform
  5. I chose External (I’m not a Google Workspace (formerly G Suite) user thus Internal was not an option for me or I would have used that) and click CREATE
  6. Fill in App nameUser support email and Email address under Developer contact information and click SAVE AND CONTINUE
  7. On the Scopes section just click SAVE AND CONTINUE and on the Option Info section click SAVE AND CONTINUE
  8. Click on the  menu button upper left >> Home >> Dashboard and copy the Project number under Project info to your clipboard
  9. Go to your google script code editor and click on the Resources menu >> Cloud Platform project…. My project was the one created by google for the script and said This script has an Apps Script–managed Cloud Platform project.
  10. Paste the Project number in the Enter Project Number here box and click Set Project

簡單的說:就是將GAS專案連結至自己的GCP專案,而不是用預設的GCP專案

原理是GAS也是利用GCP方式來管理,如果預設的GCP專案不能用,就必須轉換到自己的GCP專案

其實這個方法我試過,看到有其他人回應說可以解決

所以我還是嘗試照說明操作,看看有哪些細節沒注意,或者功能用錯

結果還是不行,不過出現的錯誤是授權失敗,而不是被擋掉

我嘗試連結其他GCP專案(網站的幾個外掛有使用到google API功能),結果竟然可以運作!!

於是比較這兩個GCP專案的OAuth設定有什麼不同

發現就是差在新增的GCP OAuth 發布狀態是”測試中”

將新增的GCP OAuth 改成”實際運作中”之後

原來直接被封鎖的情況,變成出現說明程式”未經驗證”,有”進階”的選項可以繼續執行

因此,GAS程式都能執行了

只是有個讓我困惑的地方是

後來再將OAuth轉換成”測試中”,程式仍然可以執行……

差別在於授權畫面會說明這個程式是在”測試中”

不過還是可以按”繼續”的選項來執行

搞不懂~~反正現在看起來是可以運作了
 

總結一下,其實就只有4個步驟

    1.創建GCP專案
    2.設定OAuth
    3.啟動OAuth(啟動過一次,再改回”測試中”似乎也能正常運作)
    4.將GAS專案連結至GCP專案

之後新的GAS專案只要進行第4個步驟就可以了
 
實在不簡單,終於可以解決這個懸宕已久的問題

紀錄之!!

 

後記:

在GCP的APIs & Services裡面有”憑證”

有些程式執行會自動產生憑證,這些憑證是不能刪除,

假如刪除,程式就會因為無法取得授權而無法運作

因為這無法手動增加,解決的方式就是重新連結GCP專案

又因為沒有重新連結的選項,

所以要先連結別的GCP專案之後,再重新連結回來