Заполнение таблицы HTML из данных электронной таблицы - PullRequest
0 голосов
/ 13 апреля 2019

Я работаю над простым «основанным на запросах» веб-приложением, которое извлекает определенные данные из листа, который используется несколькими людьми.Люди, которые используют это приложение, никогда не должны видеть полный файл электронной таблицы.

КОД ГАЗА:

function doGet() {
  return HtmlService.createTemplateFromFile('index').evaluate();
}

function getData(e) {
  var id = "1ui99w7eNFwRz_ck66eXH503IyhxYQVNR96HW4HusJCI";
  var data =         SpreadsheetApp.openById(id).getSheetByName("Requests").getDataRange().getValues();
  var ar = [];
  data.forEach(function(f) {
    if (~f.indexOf(e.searchtext)) {
      ar.push(f);}});
  return ar
Logger.log(ar)
}

ФАЙЛ HTML:

<code>    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <form>
    <input type="text" name="searchtext">
    <input type="button" value="ok" onClick="getData(this.parentNode)" />
    </form>
    <pre id="disp">

1 Ответ

1 голос
/ 14 апреля 2019
  • Используйте google.script.run для загрузки данных с сервера
  • Непосредственно добавить полученный массив к визуализации

Html

<!DOCTYPE html>
<html>
  <head>
    <script src="https://www.gstatic.com/charts/loader.js"></script>
    <script>
      const loaded = new Promise((res, rej) => {
        google.charts.load('current');
        google.charts.setOnLoadCallback(res);
      });
      let wrapper = null;

      async function drawTable(arr) {
        await loaded; //wait if charts is not loaded
        wrapper = new google.visualization.ChartWrapper({
          chartType: 'Table',
          dataTable: arr,
          containerId: 'table_div',
        });
        wrapper.draw();
      }

      function getData(form) {
        google.script.run
          .withSuccessHandler(drawTable)
          .getDataFromServer(form);//change server function name
      }
    </script>
  </head>
  <body>
    <form>
      <input type="text" name="searchtext" />
      <input type="button" value="ok" onclick="getData(this.parentNode)" />
    </form>
    <div id="table_div"></div>
  </body>
</html>

code.gs Фрагмент кода:

function getDataFromServer(e) {
  var id ="ID";
  var data = SpreadsheetApp.openById(id)
    .getSheetByName("Requests")
    .getDataRange()
    .getValues();
  var ar = data.splice(0,1); //add headers
  data.forEach(function(f) {
    if (~f.indexOf(e.searchtext)) ar.push(f);
   });
 return ar;
}

Читать:

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