javascript - 将过滤结果输出到文本框中

标签 javascript google-apps-script

我正在尝试创建一个网络应用程序脚本,其中包含一个接受用户输入并返回结果的字段。我需要它来列出与输入查询关联的所有结果。

我尝试过的事情:

  1. 我已经为 orderInput 分配了一个实际的订单号,并且我能够使用 Logger.log(orderMatch) 获得我希望它返回的结果,所以我知道它有效。
  2. 我不确定我是否遇到了格式问题,所以我尝试使用 orderInput.toString() 将 orderInput 转换为字符串,但没有成功。
  3. 起初我试图在禁用的输入字段中显示它,但没有用,所以我尝试使用文本区域,但也没有用。
  4. 我还尝试移动 document.getElementById("orderResults").value = (orderMatch); M.updateTextFields();return item[0] === orderInput 之间的各个地方 });
  5. 我正在使用 document.getElementById("orderNumber").addEventListener("change",orderLookup); 来触发脚本运行,但我也尝试使用 onclick= 创建一个按钮“orderLookup()” 但这没有用。

这是我的脚本:

  function orderLookup() {

    var orderSheet = "Google Spreadsheet URL"

    var ss = SpreadsheetApp.openByUrl(orderSheet);
    var ws = ss.getSheetByName("Orders");
    var originalSheet = ws.getRange(2, 1, ws.getLastRow() - 1, 3).getValues();

    var orderInput = document.getElementById("orderNumber").value;

    var orderMatch = originalSheet.filter(function(item) {
      return item[0] === orderInput
    });

document.getElementById("orderResults").value = (orderMatch);
    M.updateTextFields();
  }

至于我的 HTML:

      <div class="input-field col s2">
        <input value="" id="orderNumber" type="text" class="validate">
        <label class="active" for="orderNumber">Enter Order Number</label>
      </div>

      <center style="float:left;margin-left:0px;margin-top:0px;">
        <h6><b>Results</b></h6>
        <textarea id="orderResults" rows="10" cols="45" disabled="disabled" style="width:100%; height:auto"></textarea>
      </center>

最佳答案

在我看来,您将服务器端功能与客户端功能混合在一起,我猜是因为您提供了 html 代码和您尝试运行的脚本是客户端。

function orderLookup() {
  var orderSheet = "Google Spreadsheet URL"
  var ss = SpreadsheetApp.openByUrl(orderSheet);//Server side function
  var ws = ss.getSheetByName("Orders");//Server side function
  var originalSheet = ws.getRange(2, 1, ws.getLastRow() - 1, 3).getValues();//Server Side function
  var orderInput = document.getElementById("orderNumber").value;//Client Side Function
  var orderMatch = originalSheet.filter(function(item) {return item[0]===orderInput});//could be either
  document.getElementById("orderResults").value = (orderMatch);
  M.updateTextFields();//dont know
}

关于javascript - 将过滤结果输出到文本框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58635518/

相关文章:

javascript - 一个非常大的斐波那契数的指数

javascript - 避免 $scope.soup 并在 AngularJS 中使用controllerAs

javascript - 隐藏或删除具有动态类名的 div

javascript - 保护多个范围时,Google Apps 脚本运行时间非常慢

google-apps-script - Google Apps 脚本安装后工具提示

google-apps-script - 获取驱动器文件统计信息(查看/打开)|谷歌云端硬盘API

javascript - VueJs - v-for 结果的条件语句/过滤器

javascript - 使用 Jquery 的动态页面 .load 冲突

google-apps-script - Google 脚本 - getNumCells 返回值(获取每行中的列数)

javascript - 将数组从 google 脚本返回到网站中的函数时出错