我正在尝试通过使用url的Get请求发送数组,以在Google电子表格中发送值,例如: exec?t = 1&t = 2&t = 3&v = 2&v = 5&v = 6
我只为一个值编码了GAS,并且可以正常工作:
function doGet(e) {
Logger.log( JSON.stringify(e) ); // view parameters
var result = 'Ok'; // assume success
if (e.parameter == 'undefined') {
result = 'No Parameters';
}
else {
var sheet_id = '11xswr-tkuf-eb7MuN1SuTPLW44N5Up0AbCPEFMZDqS1'; // Spreadsheet ID
var sheet = SpreadsheetApp.openById(sheet_id).getActiveSheet();
var newRow = sheet.getLastRow() + 1;
var rowData = [];
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 'v': //Parameter
rowData[1] = value; //Value in column B
result = 'Written on column B';
break;
case 't':
rowData[0]=value; // Value in Column A
result='Written on column A';
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 :(得分:0)
我无法测试您的代码,但我想我知道您的问题出在哪里。
您将rowData
存储为单层数组,仅更改插槽0和1的值。我的建议是将数据存储为双层数组,其中每个单元格包含它自己的数组,其中包含列的值。以下是一些示例代码,可作为参考:
var rowData = [[],[]];
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 'v': //Parameter
rowData[1].push(value); //Value in column B
result = 'Written on column B';
break;
case 't':
rowData[0].push(value); // Value in Column A
result='Written on column A';
break;
default:
result = "unsupported parameter";
}
}
很抱歉,我无法清楚地了解您要如何显示数据,但是如果您想在单个单元格中显示每个值列表,则可以采用以下解决方案:
//to write a new row
sheet.getRange(newRow,1,1,rowData.length).setValues(makeDisplay(rowData));
function makeDisplay(data){
var newDisp=[[]];
for(var i=0;i<data.length;i++){
var arrToStr="";
for(var j=0;j<data[i].length;j++){
arrToStr+=data[i][j]+"\n";
}
newDisp[0].push(arrToStr);
}
Logger.log(newDisp);
return newDisp;
}
此代码绝对可以优化,但我希望我对您如何成功完成任务有所了解。