跳到主要內容區塊

ntuccepaper2019

專題報導

Google表單與校務系統連結應用—報名表繳費應用
  • 卷期:v0034
  • 出版日期:2015-09-20

作者:陳啟煌 / 臺灣大學計算機及資訊網路中心程式設計組程式設計師兼副組長


校內單位舉辦研討會,需要有收費機制,找不到專門程式設計人員幫忙?只要利用Google表單,加上本篇所提之Google App範例,即可輕鬆連結臺大線上繳費系統享用後端金流服務,不管臨櫃、轉帳、線上刷卡、超商都沒問題。

 

雖然學校已經開發了具繳費功能的線上報名系統,但畢竟通用的系統還是無法應付各種五花八門的收費需求,如研討會收費分會員、非會員、早鳥、投稿篇數等個人化不同收費方式。如果研討會可以找到程式人員客制化設計報名網頁,就可以自行計算收費金額再串接學校的線上繳費系統API,產生繳費單解決收費難題。萬一找不到程式人員幫忙,別擔心,還有另外一個不求人的方法,就是利用Google線上表單,簡單的幾個步驟就可以設計出一個線上的報名表,外加一個整理好的報名清單;關於如何設計Google 表單,網路上有很多介紹文章,在此不贅述。重點是如何串連到學校的線上繳費系統產生繳費單?別急,繼續看下去就知分曉。

 

先介紹整個金流服務架構如圖一所示,係由前端各收費單位報名網頁、收費系統模組及代收銀行系統模組三部分所構成,各司其職;在提供服務前,各收費單位需先在收費系統模組登記一組帳號密碼,供呼叫服務時認證使用。

 


圖一 

 

整個資料動向說明如下:

1.使用者在各單位報名系統的使用者介面輸入資料,在送出報名表時,呼叫收費系統提供的服務,透過SOAP協定傳遞XML文件至收費系統模組。

2.收費系統模組處理產生繳費單後,回傳一組唯一的虛擬繳費帳號交由前端單位報名網頁顯示給使用者。看似複雜,但是您只要專注在自己的報名網頁和呼叫收費系統的服務即可。建立的步驟分述如下:

1. 建立Google表單

要使用Google 表單服務前要申請一個Google 帳號,登入http://www.google.com 之後,在瀏覽器上方會出現一行功能選項,如下圖

 


圖二(取自Google頁面)

 

選最右邊更多內的雲端硬碟,按新增Google 表單,會進入表單的編輯畫面,

 


圖三(取自Google頁面)

 

功能選項如圖三所示,在此簡短說明一下,利用編輯問題,來設計報名表,依照您的需求新增欄位;利用變更主題,替您的報名表套上一些美編背景;查詢回應,可以看到類似Excel的報名表格;查看即時表單可以看到您設計的表單未來長相如何。這部分在網路上有很多介紹文件,請參考後自行設計美美的報名表。圖四為報名表範例。

 


圖四 

 

2. 啟動Google App Script 並設定觸發條件

在圖三的工具下點選指令碼編輯器,會跳出一個視窗請您選擇新增的專案,請選擇Google表單外掛程式。系統會自動幫您產生表單常用的一些函式。

 


圖五(取自Google頁面)

 

如圖五,其他的先放一邊,先捲到下面來看本次所需要的改寫的函式是function respondToFormSubmit(e),當有人送出表格時,會觸動這個函式,預設的函式已經自動幫您建好會寄送Email 給您。所以如果不改寫,就已經有多一個功能,一有使用者報名會自動把報名表欄位內容寄送給您。

 


圖六(取自Google頁面)

 

不過前題要先設定觸發條件:在指令碼編輯器的功能區塊如圖五所示,點選資源 → 現有專案的啟動程序,按一下新增觸發程序,新增觸發器,就會出現如圖六的畫面。執行選respondToFormSubmit. 活動選從表單,條件是提交表單時,再按儲存,就可完成觸發條件設定。當有表單提交時,會觸發function respondToFormSubmit(e);以目前的設定會寄一封信給您,您可以測試一下是否成功。功能畫面有一隻蟲的標示;沒錯,就是用來除蟲(Debug)的,按一下看程式是否有問題。旁邊是選擇要執行哪個函式。這時順便會檢查權限,有些函式需要授權才能執行,按Debug也會跳出視窗要求授予某些權限,畫面需授權列舉項目,如有不清楚的可以按後面的i字;如果同意,按最後面的接受,程式才會執行。

 


圖七

3. 撰寫function 連結線上繳費收費模組

 


圖八 

 

這個函式是呼叫收費模組的google script 版本,大概50幾行,實做報名網頁與收費系統模組傳送繳費單XML,及接收回傳資料,處理XML Document 的完整過程。看不懂這些程式,沒關係,其實您所需要做的只有改動line 161 的uid 和password, 填入您單位的繳費單專屬帳號及密碼。

 

4. 串連觸發程序與繳費function


圖九 

 

接下來進行最重要的步驟,把收費處理函式 myPostAPI 連上觸發程序,成品如圖九所示。需要修改或新增的在行號前面有加註紅點。在此解說一下,line 137宣告accno 用來接產生的帳號,id用來記錄是第幾位報名者。在 line 139呼叫myPostAPI 成功時會回傳 accno。Line 147-149把id,accno,繳費網址,一起加進信件內容 message.另外在寄信的地方稍微修改了一下,本來是會寄信給管理者,修改為寄信給報名者,line 144, 去取報名網頁所留存的Email, 更改信件的標題。在 line 155將報名表以密件副本寄給管理者。簡單改寫12行程式,就可以達成串接任務。

5. 測試表單驗收成果

當完成所有步驟後,可以來驗收一下成果:從前台報名表填寫資料後提交,就會觸發處理程序respondToFormSubmit ,透過myPostAPI連結繳費模組,產生繳費單,並回傳繳費帳號;然後連同報名表所有欄位,加上ID及繳費帳號,繳費單的連結都會一併寄給報名者如圖十所示。報名者就可以上網繳費。因為設計繳費帳號是唯一的,所以一旦繳款後完成銷帳就可以得知哪個報名者已經繳費。省去對帳的功夫。當然,也有不如意時,萬一送出報名表,程式沒有如預期的結果執行,先檢查之前4個步驟是否有做錯;如果沒有就要來除錯了,在指令碼編輯器的功能區塊點選檢視 → 查詢執行紀錄,會把最近執行的程序dump 一份出來給你看,如果有需要debug, 可以利用 Logger.log(logMessage) 紀錄在程式碼中寫入資料,在執行紀錄內可以看到執行時的數值,方便找出錯誤。

 


圖十 

 

結語

目前有一些免費又好用的服務可以使用如Google docs.,唯一欠缺的環節可能是是否可以和常用的資料源頭串連,在校內最大的的應用最大的資料源頭就是校務資料庫,所以透過本文展示其實一個非本科班出身的人員,只要輸入50- 70行程式碼,就可以串接繳費資料。達成收費的目的;不用再像過去用傳統方式,Email 收報名表,再自行整理報名資料的Excel檔,還要去核對報名者的傳真確認是否已經繳錢。透過本文展示按照步驟作,就可輕鬆透過Google表單及Script,讓系所研討會、訓練班等活動網頁具有線上收費的機制,提供使用者更優質便捷的服務。

 

P.S. 因為排版所以將程式碼轉成圖片,如有需要本文之原始碼,可以Email 給vinchen@ntu.edu.tw 索取。