【问题标题】:Using HTML to search a Google Sheet and return matched rows使用 HTML 搜索 Google 表格并返回匹配的行
【发布时间】:2019-03-26 23:59:49
【问题描述】:

我基本上是在尝试使用 HTML 界面使用 Google Apps 脚本创建一个 Web 应用程序,该界面允许用户在 Google 表格中搜索姓名、日期和关键字,并在搜索站点上显示匹配的行。

我的工作表包含许多行,但我只特别关注 3 行:名称、日期和关键字。我希望能够搜索工作表中与名称、日期和关键字匹配的所有行。

到目前为止,我已经尝试过关注 --> How to have a Google Form retrieve spreadsheet data and display it on a Google Site? 此链接的说明,但是每次我点击提交时,搜索结果都会显示为空。

<!DOCTYPE html>

<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <form method="get">

    Responsible: <input type="text" id="responsible"/><br>

    Date From: <input type="date" id="datefrom"/>  
    Date To: <input type="date" id="dateto"/><br>

    Description: <input type="text" id="description"/><br>

    <button onclick="gatherSearch()">Search</button>

    <input type="reset" value="Reset">

    </form>
  </body>
</html>

理想情况下,这就是表单的样子。我可以指定名称、日期和描述(或一堆的组合),它会返回与我的搜索匹配的行。

任何正确方向的帮助或指示将不胜感激:)

编辑

下面是我的gatherSearch 函数,它从HTML 页面收集搜索栏中的文本并将其转发到我的.gs 文件以处理搜索。

function gatherSearch() {
      var responsible = document.getElementById('responsible').value;
      var datefrom = formatDate(document.getElementById('datefrom').value);
      var dateto = formatDate(document.getElementById('dateto').value);
      var description = document.getElementById('description').value;

      google.script.run.basicSearch(responsible, datefrom, dateto, description);
      }
    }

【问题讨论】:

标签: html forms google-apps-script


【解决方案1】:

我刚刚使用 Google Sheets Api 完成了与 Jackson 非常相似的操作。我跟着this guide 让它工作。假设您已经设置了 Google Sheets Api,请转到第 2 步。他们在那里的示例函数 listMajors() 就是您要执行的操作。

function listMajors() {
    gapi.client.sheets.spreadsheets.values.get({
      spreadsheetId: 'YOUR_SPREADSHEET_ID',
      range: 'THE_RANGE_YOU_NEED_TO_SELECT',
    }).then(function(response) {
      var range = response.result;
      // If you get results back
      if (range.values.length > 0) {
        appendPre('Name, Major:');
        for (i = 0; i < range.values.length; i++) {
          var row = range.values[i];
          // Print columns A and E, which correspond to indices 0 and 4.
          appendPre(row[0] + ', ' + row[4]);
        }
      } else {
        appendPre('No data found.');
      }
    }, function(response) {
      appendPre('Error: ' + response.result.error.message);
    });
  }

您需要对返回的每个结果进行操作,将其附加到列表或表格中以显示结果列表。因此,假设您获得了名称、日期和关键字,然后您将在上面示例中的 for 循环中将每一行,var result = result.value[i] 附加到表或类似的东西中。

您可以查看更多关于使用 API here 读取和写入 Google 表格的信息

【讨论】:

  • 谢谢@CallumR 我会试一试:)
猜你喜欢
  • 2015-01-31
  • 2021-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-24
  • 1970-01-01
相关资源
最近更新 更多