我正在开展一个项目,我需要将我获得的数据发布到Google表单并从电子表格中获取数据。我不能使用谷歌应用程序脚本,并需要使用直接POST方法的方法,因为我将从GSM模块执行此功能。之前发布的所有解决方案都考虑了提供表单密钥的Google表单的旧结构。与此处描述的解决方案类似:
http://www.open-electronics.org/how-send-data-from-arduino-to-google-docs-spreadsheet/
我当前表单的链接是这样的。
https://docs.google.com/forms/d/14MkYG3fPNezzUC_nXUsWHlZ5JhplvjyWTAeob7f_W7g/viewform
任何帮助都将不胜感激。
答案 0 :(得分:10)
是否要求谷歌表格处于这个中间?如果能够将您的数据发布到电子表格就足够了,这里就是针对问题一方的Google-Apps-Script:一个简单的Web服务,它将表单数据作为查询字符串接受,并将其写入您的电子表格。
这个例子假设一个非常简单的电子表格,有三列,“Timestamp”,“col1”和“col2”。编辑代码以适合您的情况。
您可以看到电子表格here,甚至是make a test post。
/**
* doGet() function to add data to a spreadsheet.
*
* Spreadsheet data is provided as a querystring, e.g. ?col1=1&col2='pizza'
*
* From: http://stackoverflow.com/a/18725479/1677912
*
* @param {event} e Event passed to doGet, with querystring
* @returns {String/html} Html to be served
*
* Test URLs (adjust ID as needed):
* https://script.google.com/macros/s/--DEV-SCRIPT-ID--/dev?col1=1&col2='pizza'
* https://script.google.com/macros/s/--PUB-SCRIPT-ID--/exec?col1=1&col2='pizza'
*/
function doGet(e) {
Logger.log( JSON.stringify(e) ); // view parameters
var result = 'Ok'; // assume success
if (e.parameter == undefined) {
result = 'No Parameters';
}
else {
var id = '--SHEET-ID---'; // Spreadsheet id for responses
var sheet = SpreadsheetApp.openById(id).getActiveSheet();
var newRow = sheet.getLastRow() + 1;
var rowData = [];
rowData[0] = new Date(); // Timestamp
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 'col1':
rowData[1] = value;
break;
case 'col2':
rowData[2] = value;
break;
default:
result = "unsupported parameter";
}
}
Logger.log(JSON.stringify(rowData));
// Write new row to spreadsheet
var newRange = sheet.getRange(newRow, 1, 1, rowData.length);
newRange.setValues([rowData]);
}
// Return result of operation
return ContentService.createTextOutput(result);
}
/**
* Remove leading and trailing single or double quotes
*/
function stripQuotes( value ) {
return value.replace(/^["']|['"]$/g, "");
}
答案 1 :(得分:2)
您可以使用新表单进行发送,有一个菜单选项。 (回复 - >获取预填充网址)它提供了将数据发布到表单的网址。
您还问:"从电子表格中获取数据":有两种方式,谷歌应用脚本和gdata样式" google-spreadsheet-api"。但我建议您使用谷歌应用程序脚本和" arduino"样式代码,因为它比gdata样式api具有更好的文档和功能。
P.S。我创建了一些用于创建" arduino"的公式。用户界面一会儿。