最近,我和学生们决定使用Arduino观测学校周围的温度和湿度,进行数据分析。
需要一张SD卡来存储Arduino测量的数据,而为检查数据,需要将SD卡插入和拔出。
突然想到,如果将数据存储在网上会怎么样呢。
今天的文章是关于Arduino与Google表格集成的第一步,即Google电子表格的设置。
1. Google电子表格
Google电子表格是由Google提供的免费网络应用。
它主要在浏览器上运行,支持协同编辑和查看,并可以通过应用脚本进行HTTPS请求来修改表格。
首先,在Google中搜索“Google电子表格”并创建一个新的表格。

登录后,会看到如下窗口。点击空白电子表格来创建一个新表格。

如果生成了新的表格,首先按如下步骤操作:
将电子表格的标题和工作表名称改为英文。(以防错误)
创建数据的列索引。


现在记住地址栏中电子表格的ID。
地址格式为'/d/Google电子表格ID/edit#gid=0'。复制中间部分即可。

现在Google电子表格的基本设置已完成。接下来,设置电子表格的脚本。
2. 设置应用脚本
进入电子表格菜单中的[扩展程序]-[Apps Script]。

会看到如下窗口。现在可以在function处输入我们需要的代码。

输入以下代码。在此需要指定Google表的ID,以及通过switch和case语句指定所需值的名称。
function doGet(e) {
Logger.log( JSON.stringify(e) );
var result = 'Ok';
if (e.parameter == 'undefined') {
result = 'No Parameters';
}
else {
var sheet_id = '您自己的Google表ID'; // Spreadsheet ID
var sheet = SpreadsheetApp.openById(sheet_id).getActiveSheet();
var newRow = sheet.getLastRow() + 1;
var rowData = [];
var Curr_Date = new Date();
rowData[0] = Curr_Date; // Date in column A
var Curr_Time = Utilities.formatDate(Curr_Date, "Asia/Tokyo", 'HH:mm:ss');
rowData[1] = Curr_Time; // Time in column B
for (var param in e.parameter) {
Logger.log('In for loop, param=' + param);
var value = stripQuotes(e.parameter[param]);
Logger.log(param + ':' + e.parameter[param]);
switch (param) {
case 'value1':
rowData[2] = value;
result = '3번째 열에 value1 값 입력';
break;
case 'value2':
rowData[3] = value;
result += ' ,4번째 열에 value2 값 입력';
break;
default:
result = "unsupported parameter";
}
}
Logger.log(JSON.stringify(rowData));
var newRange = sheet.getRange(newRow, 1, 1, rowData.length);
newRange.setValues([rowData]);
}
return ContentService.createTextOutput(result);
}
function stripQuotes( value ) {
return value.replace(/^["']|['"]$/g, "");
}输入完成后部署该代码。点击右上角的部署,然后点击新部署。

在新部署中,将类型更改为网络应用,访问权限更改为所有用户后点击部署。
如果不设置为所有用户访问,会要求登录。这时可将权限重新设置为所有用户。


点击部署时会请求访问权限。点击批准访问。

访问窗口打开时,点击你的账户。

会看到警告消息,忽略并点击下方的Advanced。

点击弹出的Go To ~部分进行授权。


然后出现新部署窗口,复制网络应用的URL以验证设置是否生效。

3. 验证网络应用
通过GET请求发送到网络应用的URL,会将查询字符串中的数据保存到value1,value2中。
在地址栏的网络应用地址后面添加如下数据,点击回车。
https://script.google.com/macros/s/Google App Script ID/exec?value1="期待值1"&value2="期待值2"
这样传递数据的形式称为查询字符串。在“?”后接期待值,用“&”连接。
进入Google表格后,确认数据是否如期被传递。

非文本数据,比如简单的数字,也可以传递。


值已正确输入。
4. 总结
在本文中,我们简单介绍了通过GET请求向Google电子表格输入数据的方法。
接下来只剩下Arduino通过https通信发送GET请求的操作。
下次文章中将继续讨论。

댓글을 불러오는 중...