我目前正在为我的大学开设一个学期项目,我们希望将数据从Arduino记录到Google表格。
我正在关注我可以在Google上找到的众多教程和示例,它到目前为止工作真的很好。我的Arduino能够将数据上传到所述电子表格。
不幸的是,所有这些示例总是只处理要填充的一行。对于我们的项目,我们希望同时填充2或3行。
我将很快展示到目前为止我所做的事情,也许你可以帮助我解决我的(可能很容易的)问题。
https://script.google.com/macros/s/<gscript id>/exec?tempData=datahere
但是,当我想要填充表格的两三行时,我现在该如何进步?我说代码的作者已经实现了填充第三行的选项,但是我无法在我的网址中找到输入内容然后用数据填充它。
我尝试编写类似
的所有内容https://script.google.com/macros/s/<gscript id>/exec?tempData=datahere&tempData1=value2
刚刚以书面形式结束
datahere&tempData1=value2
在我的第一行,未将datahere
填入第一行,value2
填入第二行。
如何提供和写入多行数据?
此脚本中的代码为:
/*
GET request query:
https://script.google.com/macros/s/<gscript id>/exec?tempData=data_here
*/
/* Using spreadsheet API */
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 = '<ssheet id>'; // Spreadsheet ID
var sheet = SpreadsheetApp.openById(id).getActiveSheet();
var newRow = sheet.getLastRow() + 1;
var rowData = [];
//var waktu = new Date();
rowData[0] = new Date(); // Timestamp in column A
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 'tempData': //Parameter
rowData[1] = value; //Value in column B
break;
case 'tempData1':
rowData[2] = value; //Value in column C
break;
default:
result = "unsupported parameter";
}
}
Logger.log(JSON.stringify(rowData));
// Write new row below
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, "");
}
答案 0 :(得分:1)
我建议如下:
创建您希望写入电子表格的数据的二维数组。如果Arduino上的客户端使用的是JavaScript,则可能如下所示:
var data = [
["row1value1", "row1value2"],
["row2value1", "row2value2"]
];
将此转换为JSON,再次在JavaScript中可能如下所示:
var json = JSON.stringify(data);
这为您提供了数组的字符串表示。
现在使用此数据发出请求。我建议你应该使用doPost
代替doGet
,因为你要将数据发送到更新状态的电子表格。但是,为了使某些工作正常,您的网址将如下所示:
https://script.google.com/<.....>/exec?myarray=<stringified JSON>
在应用脚本中,在doGet
中(再次考虑使用doPost
),您可以使用:
// Get the JSON representation of the array:
var json = e.parameter.myarray;
// Convert back to 2d array
var data = JSON.parse(json);
现在,您可以使用Range
将此内容写入表单中的setValues
,例如假设一个矩形的2d数组:
sheet.getRange(1, 1, data.length, data[0].length).setValues(data);
希望这有帮助