使用Google Apps脚本搜索电子表格不会返回任何数据

时间:2017-06-13 13:45:00

标签: javascript html google-apps-script google-sheets

我想在电子表格中搜索数据并将结果显示在HTML网页上。

我的问题:网页上没有显示结果。

我的策略:

  1. 数据库以电子表格形式保存在Google云端硬盘中。
  2. 网页访问者在文本框中输入字符串,然后单击搜索按钮。
  3. Column A中搜索字符串并返回同一行的数据。
  4. 将行的结果数据放在网页(同一页面)中。
  5. function doGet() {
     return HtmlService.createTemplateFromFile('index').evaluate();
      var searchString = document.getElementById('searchString').value;
    } 
    
    function onOpen() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var menuEntries = [ {name: "Search", functionName: "onSearch"} ];
      ss.addMenu("Commands", menuEntries);    
    }
    
    function onSearch() {
        var searchString = function doGet() {
                           document.getElementById('searchString').value;
                           }
        var sheetActive = SpreadsheetApp.openById("1MQVrQ7fmkitP-KNvv9m17Yi0ykGWgF5UjrVh5yCP8RE");
        var sheet = sheetActive.getSheetByName("Sheet1");
    
        var column =1; //column Index   
        var columnValues = sheet.getRange(2, column, sheet.getLastRow()).getValues(); //1st is header row
        var searchResult = columnValues.findIndex(searchString); //Row Index - 2
    
        if(searchResult != -1)
        {
            //searchResult + 2 is row index.
            SpreadsheetApp.getActiveSpreadsheet().setActiveRange(sheet.getRange(searchResult + 2, 1));
             document.getElementById("searchResult").innerHTML = searchResult;
    
        }
     }
    
    Array.prototype.findIndex = function(search){
      if(search == "") return false;
      for (var i=0; i<this.length; i++)
        if (this[i] == search) return i;
    
      return -1;
    }
    
    <!DOCTYPE html>
    <html>
      <head>
        <base target="_top">
      </head>
    
    <body>
    <input type="text" id="searchString" name="searchString" />
    
        <script>
          google.script.run.doGet();
          google.script.run.onOpen();
        </script>
    
    <a href="javascript: onSearch();">Search</a>
    <div id="searchResult"></div>
    </body>
    </html>
    

1 个答案:

答案 0 :(得分:0)

我认为这是一个错字问题: 您添加了一个字符串:document.getElementById("searchResult").innerHTML = "searchResult";

并且可能需要使用您的变量重新设置它:

document.getElementById("searchResult").innerHTML = searchResult;