Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从web应用程序中的筛选数组自动完成_Javascript_Arrays_Object_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 从web应用程序中的筛选数组自动完成

Javascript 从web应用程序中的筛选数组自动完成,javascript,arrays,object,google-apps-script,google-sheets,Javascript,Arrays,Object,Google Apps Script,Google Sheets,我学习JavaScript和应用程序脚本已经有一段时间了,我被困在这一部分,在过去的几个小时里一直如此 所以我有一个谷歌电子表格作为我的数据源,上面有员工名单和他们所在的城市。现在,他们都通过特定的谷歌账户连接到这个网络应用程序,我想做的是制作一个自动完成列表,但只有来自特定城市的人 function getNames() { var ss = SpreadsheetApp.openById(id); var wsMail = ss.getSheetByName('MAILS');

我学习JavaScript和应用程序脚本已经有一段时间了,我被困在这一部分,在过去的几个小时里一直如此

所以我有一个谷歌电子表格作为我的数据源,上面有员工名单和他们所在的城市。现在,他们都通过特定的谷歌账户连接到这个网络应用程序,我想做的是制作一个自动完成列表,但只有来自特定城市的人

function getNames() {
  var ss = SpreadsheetApp.openById(id);
  var wsMail = ss.getSheetByName('MAILS');
  var wsAteliers = ss.getSheetByName('ATELIERS')
  var dataPerso = wsAteliers.getDataRange().getValues();
  var data = wsMail.getDataRange().getValues();
  var people = [];
  var email = Session.getActiveUser().getEmail();

  // TO FIND THE CITY, NO PROBLEMS
  for (var i = 0; i < data.length; i++) {
    if (data[i][0] == email) {
      var atelier = wsMail.getRange('B' + (i + 1)).getValue();
    }
  }

  //RETURNS ARRAY OF NAMES FROM CORRESPONDING CITY
  for (var i = 0; i < dataPerso.length; i++) {
    if (dataPerso[i][1] == atelier) {
      people.push(dataPerso[i][0]);
    }
  }
  return people;
}
我有一个二维数组,第1列有名字,第2列有他们所在的城市。我的函数首先获取他们登录的电子邮件,然后过滤列表以查找存储在变量中的相应城市。这部分很好用

然后,我的函数查看员工列表,并创建一个一维数组,其中仅包含来自该特定城市的姓名

function getNames() {
  var ss = SpreadsheetApp.openById(id);
  var wsMail = ss.getSheetByName('MAILS');
  var wsAteliers = ss.getSheetByName('ATELIERS')
  var dataPerso = wsAteliers.getDataRange().getValues();
  var data = wsMail.getDataRange().getValues();
  var people = [];
  var email = Session.getActiveUser().getEmail();

  // TO FIND THE CITY, NO PROBLEMS
  for (var i = 0; i < data.length; i++) {
    if (data[i][0] == email) {
      var atelier = wsMail.getRange('B' + (i + 1)).getValue();
    }
  }

  //RETURNS ARRAY OF NAMES FROM CORRESPONDING CITY
  for (var i = 0; i < dataPerso.length; i++) {
    if (dataPerso[i][1] == atelier) {
      people.push(dataPerso[i][0]);
    }
  }
  return people;
}
我得到这个结果:

正如你所看到的,这并不是我想要的结果,它应该更像:

{name1=null,name2=null等..}

我真的迷路了,谁能给我一些指点吗


谢谢,

我不确定您的
选项
值是多少,但我确定您的问题是使用
选项[v[0]]
而不是
选项[v]
,从而导致在访问字符串的第一个字符时使用单个字母

尽管我更喜欢使用
fromEntries
来代替这种方法:

function myFunction() {
  const array = ["Ben", "John"];
  const obj = Object.fromEntries(
    array.map(name => [name, null])
  )
  Logger.log(obj);
}
输出:

参考文献: