лучший способ вернуть строку на основе значения ячейки в скрипте приложений Google - PullRequest
0 голосов
/ 08 ноября 2018

Есть ли лучший способ найти строку на основе значения ячейки без циклического прохождения каждой строки? Функция findRowById перебирает каждую строку листа и ищет строку, если первый столбец равен строке поиска «id».

var ss = SpreadsheetApp.openById("******************");
var sheet = ss.getSheetByName('Sheet1');

function doGet(e) {
  if(e.parameter.action == "find" && e.parameter.id != undefined)
    return findRowById(ss,e.parameter.id);     
}

function findRowById(sheetname,id) {

  var dataRange = sheetname.getDataRange();
  var values = dataRange.getValues();
  var result = {};
  var data = [];
  data.push(values[0]);

  for (var i = 1; i < values.length; i++) {
    if(values[i][0] == id){
      data.push(values[i]);
      result.records = getJsonArrayFromData(data);
    }   
  } 

  return ContentService.createTextOutput(JSON.stringify(result))
  .setMimeType(ContentService.MimeType.JSON)
}

function getJsonArrayFromData(data)
{

  var obj = {};
  var result = [];
  var headers = data[0];
  var cols = headers.length;
  var row = [];

  for (var i = 1, l = data.length; i < l; i++)
  {
    // get a row to fill the object
    row = data[i];
    // clear object
    obj = {};
    for (var col = 0; col < cols; col++) 
    {
      // fill object with new values
      obj[headers[col]] = row[col];    
    }
    // add object in a final result
    result.push(obj);  
  }

  return result;  

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