2018年7月16日 星期一

Apps Script : TPET10 NFC 簽到系統

2018年7月16日 星期一

上學期期末時,好友原禎 (大學塾的站長) 提到想在 TPET 年會時,玩一下 NFC 的電子簽到系統,初步的構想就是讓學員擁有一張 NFC 貼紙,來上課的學員就拿貼有 NFC 貼紙的名牌,讓設置在講堂的 NFC 讀卡機「嗶」一下(感應),系統再進行名冊資料的搜尋,並登錄簽到的時間。這麼好玩的事,當然不可以放過囉!

為了方便資料的維護,及跨平臺的目標,我們採用了 Google 的試算表當資料的儲存空間,程式則是用 Google Apps Script 來開發。

系統運作大致如下:

前置作業:

試算表的部份
  • 在試算表中建置一個名為「users」的工作表
  • users 第一個欄位為 NFC tag 的 ID (格式建議設為文字,以免零開頭的編號被省略)。
  • users 第二個欄位為學員的姓名。
Apps Script 的部份
  • 填入試算表的 Google DOC ID。
  • 在程式碼中加入所有課程的清單。


程式主要流程:
  • 選定講堂進行的課程,送出課程代碼給程式。
  • 學員刷卡,送出卡號給程式。
  • 在試算表中「users」工作表的第一欄中搜尋和卡號一樣的那一行。
  • 在以課程代碼為名的工作表中登錄學員的卡號、姓名及簽到的時間;如果簽到資料已存在就以新資覆蓋。
  • 在刷卡頁面顯示學員姓名及歡迎詞,並等待下一個人刷卡。

如果沒有 NFC 貼紙和讀卡機怎麼玩?沒關係,可以用 Barcode scanner 加條碼;再沒有,就手動輸入編號即可玩了。

下面看看如何在自己的 Google 雲端硬碟中建置這個簡易的簽到系統。



建立試算表的副本

第一個步驟當然是先在自己的 Google Drive 中把東西複製過去,才能寫入自己的資料。

1.先登入 Google 帳號。

2.開啟底下的連結 :


3.點選試算表上方主選單 [檔案] 中的 [建立副本]。


4.出現「複製文件」的對話框後,可以重新命名,並選定要儲存的位置,最後按 [確定] 鈕。



完成以上的步驟就會複製一份試算表到自己的 Google Drive 中囉!

建立 Apps Script 的副本

1.先登入 Google 帳號

2.開啟底下的連結 :

3.在開啟的 Apps Script 中點選上方主選單 [檔案] 中的 [建立副本]。



完成以上的步驟即可複製一份 Apps Script 到自己的空間囉!

修改 Apps Script 

在新建立的 Apps Script 的副本中,代表試算表檔案的「ID」內容(變數 sheet_id),還是舊試算表檔案的,所以需要先查出自己新建立的副本檔案 ID;另外課程代碼及課程標題也可以自行修改為需要的內容。底下來看看怎麼更換試算表的 ID:



1.查出試算表的 ID:打開 Google 的試算表以後,我們可以在網址中看到它的 ID



2.在網址列中複製試算表的 ID ,並在簽到系統的 Apps Script 中,把程式碼裡的 sheetId 變數內容置換成新副本的。



3.按上方工具列中的「磁片圖示」來儲存修改過的內容。


接著就可以準備第一次的發佈及權限的授權。


發佈 Apps Script

Google 的 Apps Script 可以針對需求做不同的「佈署」,由於本次的工具是以網頁的方式在運作,所以我們必須選擇「佈署為網路應用程式」。

另外,當我們執行或發佈程式時,程式裡使用的資源如果未經授權,過程中會跳出授權的頁。底下來看看如何進行第一次的發佈及授權。

1.點選上方主選單 [發佈] 中的 [佈署為網路應用程式]


2.新增版本,並輸入註記文字


3.按一下 [更新] 鈕後,因為是第一次發佈,會出現「需要授權」的訊息。想繼續玩就按 [核對權限] 的按鈕。


4.選擇帳號


5.按一下左下方的「進階」



6.按一下左下方的 [前往「......」(不安全)] 的連結。(如果看不到,記得往下捲動捲軸)



7.按 [允許] 鈕來授權



完成第一次的授權程序以後,程式就佈署完畢,可以開始測試了。



是不是每一次改過程式都要重新發佈一次呢?

可以試著重新再點一下上方主選單 [發佈] 中的 [佈署為網路應用程式] ,並觀察一下紅色和綠色箭頭個地方的網址有何不同?


如果複製紅色箭頭的網址來觀察,它最後是以「exec」結束;但複製綠色箭頭所指的連結網址來看,它的最後卻是以「dev」結束。

「exec」結尾的網址是正式發佈的,而「dev」的則是測試時用的。前者必須儲存並更新版本序號以後才會執行最新的程式碼;而後者則只要儲存即可以測試最新的程式碼。

後來應原禎之前提過的需求,另外改了一支程式,刷完卡就開啟對應連結。檔案一併分享在下方,有興趣的可以自己試試:



目前的程式完全就是好玩,玩一玩而已,只有簡單的架構,做很簡單的事,有興趣可以再發展成更完整的應用。使用 Google spread sheets 當資料庫,好處是方便,但是反應時間似乎久了一點,可以的話,再來試試 Google 的 Firebase ,效能應該可以大幅提升。

上面簡單的分享,如果您有更好的版本,也可以一起來分享。

分享、共好~航向偉大的航道~~

相關文章





3 則留言:

  1. 回覆
    1. 您好:
      簽到的記錄通通在Google的試算表中。

      刪除
  2. 您好,請問要如何更改成,若已經報到的人又重新感應時,會顯示已報到呢?

    回覆刪除

 
雄::gsyan © 2009. Design by Pocket