JS在Google工作表脚本中检索过滤的数据

时间:2018-10-27 05:11:19

标签: javascript html google-apps-script

我有一个HTML表单,可从Google表格获取数据。 为了获得工作表中的所有记录,我使用以下代码。

我现在正在尝试添加代码以过滤数据-

(1)仅获得Col A满足某些条件的一行 例如从行获取数据,其中列A =“ 123” ...列A具有唯一ID

(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 :(得分:0)

除了举一个示例,该示例从电子表格中的给定工作表中获取所有数据并将其返回到html页面并显示出来,我不知道如何回答您的问题。

这是一种在一张纸上获取所有数据的简单方法。目前,它只是电子表格中包含的一个对话框,但可以轻松地将其转换为Web应用程序。

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>