Как отправить массив с помощью URL-адреса Получить запрос? - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь отправить массив через запрос Get, используя url для отправки значений в электронную таблицу Google, например: Exec? Т = 1 & т = 2 & т = 3 & v = 2 & v = 5 & v = 6

Я закодировал ГАЗ только для одного значения, и он работает:

    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, "");
  }

Когда я пытаюсь отправить массив, появляются только первые значения. Я хотел бы знать, какие изменения я должен сделать, чтобы выполнить отправку массива. Заранее спасибо.

1 Ответ

0 голосов
/ 31 августа 2018

Я не смог протестировать ваш код, но, думаю, я знаю, где ваша проблема.

Вы сохраняете 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;

}

Этот код определенно можно оптимизировать, но я надеюсь, что я дал вам представление о том, как вы можете добиться успеха в своей задаче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...