首页 > 解决方案 > 如何使用 jQuery 从选项卡中获取名称并将名称数据从主机表发送到名称表?-App 脚本

问题描述

我终于用 jQuery 获得了一个更短的自动完成功能。现在,我需要 1. 从工作表选项卡“名称”中获取名称以实现自动完成功能 & 2. 选择名称后,将数据从主机表发送到名称表。为页面完成了 html/css。

我已经用谷歌搜索了几天,我还没有找到以前做过的人。我是 jQuery/Javascript 的新手,所以在提供您的建议时请牢记这一点。

<script>
  $( function() {
    var availableTags = [
      "Name 1",
      "Name 2",
      "Name 3"
    ];
    $( "#tags" ).autocomplete({
      source: availableTags
    });
  } );
  </script>

编辑:选择名称后,将相应的数据发送到名称表。示例:日期、客户、时间、名称 1。如果选择了名称 1,则将日期、客户和时间从主机表发送到名称 1 的表。如果选择了名称 2,则将其数据发送到名称 2。依此类推。我需要大约 25 个不同的名称。谢谢。

标签: javascriptjquerygoogle-apps-scriptautocompletesend

解决方案


解决方案

要从源表列中的名称表中的列表中建议自动完成名称,您需要创建数据验证。这可以通过 UI 和 Apps 脚本来实现。

这里的重点是,当您创建此数据验证时,您不希望启用下拉列表(因为您的功能只是自动完成名称)并且您不希望每次输入的名称都不是在你的名单中。

1.使用Apps Scipts

以下代码将创建您所需的数据验证。它有解释它是如何工作的注释。要了解有关如何在电子表格中设置数据验证的更多信息,请查看数据验证类的文档以及此实现中使用的方法:newDataValidationrequireValueInRangesetAllowInvalid

function myFunction() {
  // Get source range where we want the auto complete text
  var myRange = SpreadsheetApp.getActive().getSheetByName('Source').getRange('B:B');
  
  // Get the range of the list of names we want to auto complete
  var range = SpreadsheetApp.getActive().getSheetByName('Name').getRange('A1:A5');
  
  // Create a data validation rule with the dropdown list disables (this will allow to only show the name suggestions
  // and set allow invalid false to avoid the ui to pop a message every time you enter a value not in the list
  var rule = SpreadsheetApp.newDataValidation().requireValueInRange(range, false).setAllowInvalid(false).build();
  
  // Set the data validation to our range where we want the auto complete function
  myRange.setDataValidation(rule);
}

2. 使用用户界面

使用List的条件为您创建一个数据验证(在您的工作表中转到Data->Data validation),该范围的范围为with show dropdown list in cell unchecked无效数据拒绝输入Source!B:BNames!A2:Amax

我希望这对你有所帮助。让我知道您是否需要其他任何内容,或者您​​是否不理解某些内容。:)


推荐阅读