【问题标题】:Using Google Scripts to search and to match array使用 Google Scripts 搜索和匹配数组
【发布时间】:2017-05-26 20:33:51
【问题描述】:

我想建立一个带有对话框的按钮来匹配使用脚本的结果。例如,我将美国分为东、中、西。我有一个名为 US 50 states name and abbreviation 的文本文件。当我输入“NY”或 Boston”时,结果会显示“East”。如何在 Google 电子表格中实现这一点。谢谢。

【问题讨论】:

  • 您好,我输入了这段代码,但是没有地方可以搜索。我在哪里可以搜索?换句话说,我是否必须添加按钮才能显示调用此脚本?

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


【解决方案1】:

这是脚本文件:

function findSection(state)
{
  var state =(typeof(state) != 'undefined')?state: '';
  var found = "No Data Provided";
  if(state)
  {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sht = ss.getSheetByName('StateSearch');
    var rng = sht.getDataRange();
    var rngA = rng.getValues();
    found ='Not Found';
    for(var i=1;i<rngA.length;i++)
    {
      if((state==rngA[i][0]) || (state == rngA[i][1]))
      {
        found = rngA[i][2];
        break;
      }
    }
  }
  return found;
}

function searchSideBar()
{
  var ui = HtmlService.createHtmlOutputFromFile('sectionSearchDialog').setTitle('State Search');
  SpreadsheetApp.getUi().showSidebar(ui);
}

这是侧边栏的 HTML 文件:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    State:<input type="text" id="txt1" size="30" value=""/><br />
    Section:<input type="text" id="txt2" size="30" value=""/><br />
    Search:<input type="button" value="Search" onClick="sectionSearch();" />
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script>
      console.log('here');
      function sectionSearch()
      {
        var v = $('#txt1').val();
        google.script.run
          .withSuccessHandler(updateSection)
          .findSection(v);
      }
      function updateSection(v)
      {
        $('#txt2').val(v);
      }
    </script>
  </body>
</html>

这就是电子表格“StateSearch”的样子:您可以将州数据放在这里,如果您愿意,可以在第三列中添加您的部分名称。添加城市留给读者作为练习。

添加一些没有地理位置的城市的简单方法可能是这样:

相同的侧边栏代码:此脚本文件:

function findSection(state)
{
  var state =(typeof(state) != 'undefined')?state: '';
  var found = "No Data Provided";
  if(state)
  {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sht = ss.getSheetByName('StateSearch');
    var rng = sht.getDataRange();
    var rngA = rng.getValues();
    found ='Not Found';
    for(var i=1;i<rngA.length;i++)
    {
      if((state==rngA[i][0]) || (state == rngA[i][1]) || (isACity(state,rngA[i][3])>-1))
      {
        found = rngA[i][2];
        break;
      }
    }
  }
  return found;
}

function searchSideBar()
{
  var ui = HtmlService.createHtmlOutputFromFile('sectionSearchDialog').setTitle('State Search');
  SpreadsheetApp.getUi().showSidebar(ui);
}

function isACity(city,cities)
{
  var city = (typeof(city) != 'undefined')?city:'';
  var cities = (typeof(cities) != 'undefined')?cities:'';
  var r = -1;
  if(city && cities)
  {
    var citiesA = String(cities).split(',');
    r = citiesA.indexOf(city);
  }
  return r;
}

电子表格如下所示:

您必须运行侧边栏代码才能加载它,或者您可以在 onOpen() 中执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 2015-10-13
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    相关资源
    最近更新 更多