03 上傳資料到Google試算表
(2021/02/02 於嘉義HOTEL HI 新民店 )
前陣子取得一塊micro:bit新的物聯網模組DFRobot的WiFi IoT Module模組,想利用它將micro:bit的光線感測值及溫度感測值上傳到Google試算表,之前利用IFTTT積木完成了,今天想用HTTP的GET積木來做同樣的事,但發現 Google Apps Script (GAS)不接受get積木的上傳動作,還好最後找到了替代方法....
一、Google試算表的處理
到Google雲端硬碟新增一個Google試算表
再進入【指令碼編輯器】
撰寫如下程式
此部份是有兩種資料會上傳上來,A欄的變數是light(光線感測值),B欄的變數是temp(溫度感測值)
function doGet(e) {
//取得參數
var params = e.parameter;
var light = params.light;
var temp = params.temp;
//sheet資訊
var SpreadSheet = SpreadsheetApp.openById("1N26_Qj8i2flJrG7ZvVB56nj12FvNkc8RINpbmHNzKu8");
var Sheet = SpreadSheet.getSheets()[0];
var LastRow = Sheet.getLastRow();
//存入資訊
Sheet.getRange(LastRow+1, 1).setValue(light);
Sheet.getRange(LastRow+1, 2).setValue(temp);
//回傳資訊
return ContentService.createTextOutput("成功");
}
上面藍色部份可從試算表的網址取得
先存檔再部署,要記得先存檔才不會出錯
選擇【網頁應用程式】的部署類型
改成【所有人】都可以存取,後按【部署】,完成部署工作
授予存取權
選取自己的帳戶
這個應用程式未經Google驗證,點擊【進階】
會產生一個網址,並把它複製下來
利用GET方式,測試資料能否成功上傳上去
在剛剛複製的網址後面加上?light=100&temp=25
輸入網址後,出現【成功】兩字
到Google試算表看到剛新增的資料,利用GET的方式上傳成功。
二、Makecode程式部份
這次使用micro:bit V2 + DFRobot的WiFi IoT Module模組來上網
WiFi IoT Module模組的擴展積木,這次使用I2C介面
使用I2C介面:https://github.com/DFRobot/pxt-DFRobot_WiFi_IoT_I2C
使用UART介面:https://github.com/DFRobot/pxt-DFRobot_WiFi_IoT_UART
官方積木涵蓋了常用的IOT積木
採用上面GET積木來寫程式,如下:
發現:不管用http的80埠或https的443埠,都Timeout無法成功上傳到Google試算表
後來找到一篇文章https://sites.google.com/site/csjhmaker/esp8266-xiang-guan/esp8266-arduino/xie-rugoogle-shi-suan-biao,說到:
如果還要找一個平台來轉換,那是不是用IFTTT就好了,因為IFTTT也可以使用Webhooks來將資料上傳Google試算表
三、pushingbox的使用
先用Google帳號登入(完全照上面的文章來操作)
點擊My Services
點擊Add a service
加入CustomURL的服務
輸入GAS網址及GET
點擊 My Scenarios
輸入Scenario名稱
加入ACTION
加入之前新增的服務
並在空格輸入?light=$light$&temp=$temp$
完成
最後再利用MakeCode來寫程式
按A鍵後,資料成功上傳上去了
經過轉一個彎後,終於成功了
Postman
https://andy6804tw.github.io/2020/08/04/google-app-script-post/
https://www.wfublog.com/2017/01/google-apps-script-spreadsheet-write-data.html