JS извлекает отфильтрованные данные в скрипте google sheet - PullRequest
0 голосов
/ 27 октября 2018

У меня есть HTML-форма, которая получает данные из листа Google.Чтобы получить ВСЕ записи в листе, я использую следующий код.

Я сейчас пытаюсь добавить код для фильтрации данных -

(1), чтобы получить только ОДНУ строку, где Col A соответствует некоторым критериямEx.Получить данные из строки, в которой столбец A = "123" ... Столбец A имеет уникальный идентификатор

(2), чтобы получить только те строки, в которых столбец F не заполнен

Пожалуйста, помогите ...

 function read_value(request,ss){

 var output  = ContentService.createTextOutput(),
 data    = {};

  var sheet="sheet1";

data.records = readData_(ss, sheet);

 var callback = request.parameters.callback;

 if (callback === undefined) {
 output.setContent(JSON.stringify(data));
 } else {
 output.setContent(callback + "(" + JSON.stringify(data) + ")");
      }
 output.setMimeType(ContentService.MimeType.JAVASCRIPT);

  return output;
      }


 function readData_(ss, sheetname, properties) {

 if (typeof properties == "undefined") {
 properties = getHeaderRow_(ss, sheetname);
 properties = properties.map(function(p) { return p.replace(/\s+/g, '_'); });
 }

var rows = getDataRows_(ss, sheetname),
data = [];

for (var r = 0, l = rows.length; r < l; r++) {
var row     = rows[r],
record  = {};

for (var p in properties) {
record[properties[p]] = row[p];
}

data.push(record);

 }
return data;
 }

function getDataRows_(ss, sheetname) {
var sh = ss.getSheetByName(sheetname);

return sh.getRange(2, 1, sh.getLastRow() -1,sh.getLastColumn()).getValues();

 }



function getHeaderRow_(ss, sheetname) {
var sh = ss.getSheetByName(sheetname);

return sh.getRange(1, 1, 1, sh.getLastColumn()).getValues()[0];  
} 

1 Ответ

0 голосов
/ 27 октября 2018

Я не знаю, как ответить на ваш вопрос, кроме как привести пример, который получает все данные из данного листа в электронной таблице, возвращает их на html-страницу и отображает.

Вотпростой способ получить все данные на листе.В настоящее время это просто диалоговое окно, содержащееся в электронной таблице, но его можно легко превратить в веб-приложение.

Сценарий Google Apps:

function getMyData(dObj) {//function called from html in with window.onload
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName(dObj.sheetname);
  var rg=sh.getDataRange();
  var vA=rg.getValues();
  var hl='<table>';
  for(var i=0;i<vA.length;i++) {
    if(vA[i][0]==dObj.colACriteria){//you can put your filtering criteria here
      hl+='<tr>';
      for(var j=0;j<vA[i].length;j++) {
        hl+=Utilities.formatString('<td>%s</td>', vA[i][j]);
      }
      hl+='</tr>';
    }
  }
  hl+='</table>';
  return hl;
}

function showGetMyDataDialog() {//this launches the html as a modeless dialog
  var ui=HtmlService.createHtmlOutputFromFile('getdata').setTitle('My Data');
  SpreadsheetApp.getUi().showModelessDialog(ui, 'Get My Data');
}

, а вот HTML-код:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <script>
   window.onload=function(){
    var dObj={sheetname:'Index',colACriteria:'123'};
    google.script.run
    .withSuccessHandler(function(hl){//this is the call back function that put the data into a div
      document.getElementById('mydata').innerHTML=hl;
    })
    .getMyData(dObj);
  };

  </script>
  <body>
    <div id="mydata"></div>
  </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...