Google Scripts Простой поиск - PullRequest
0 голосов
/ 19 октября 2018

Я хочу найти на листе значение в листе, а затем вернуть строку и столбец, в котором было найдено значение.

Я хорошо разбираюсь в VBA и использовал .FindФункция для достижения этой цели очень легко.Тем не менее, после поиска последних 30 минут в Интернете, я был ошеломлен, обнаружив, что так сложно найти код для этой чрезвычайно простой функции.Я чувствую, что нахожусь в сумеречной зоне.Неужели в Javascript нет ничего похожего на .Find?Если да, то почему этот язык используется так часто, когда VBA, по-видимому, может выполнять те же задачи гораздо более простым способом?Пожалуйста, сообщите.

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Я предполагаю, что вы вызываете что-то вроде mysheet.getDataRange().getValues(), которое возвращает содержимое листа Google в виде массива массивов, например, [[row1A, row1B], [row2A, row2B]].

С помощью JS вы можете получить индексзначение в массиве, используя indexOf, которое возвращает индекс найденного элемента, или -1, если элемент отсутствует в массиве.Я не думаю, что вы можете напрямую искать по двум вложенным массивам.Вместо этого вы можете попробовать перебрать внешний массив и выполнить поиск по внутреннему массиву.Как то так:

// get data from google sheet, doing something like this
var data = mysheet.getDataRange().getValues()

// define our own function
function findItem(data) {
  // loop over outer array
  for (var i=0; i < data.length; i++) {
    var row = data[i];                   // get the inner array
    var idx = row.indexOf(searchValue);  // search for value
    // if the value is found, return [row, column] 
    if (idx > -1) {
      return [i, idx];
    }
  }

// call the function
var res = findItem(data);
var row = res[0];
var col = res[1];
0 голосов
/ 19 октября 2018

Ты сравниваешь яблоки и апельсины.JavaScript и VBA - это разные языки с разными целями.VBA был построен, чтобы позволить ему легко интегрироваться с MSSQLServer.JavaScript в своем родном виде вообще не имеет никакой функциональности реляционной базы данных.Это больше предназначено для манипулирования веб-страницами через DOM.(Он может сделать больше, чем это, но это его основная функция.) Хотя VBA может делать некоторые из вещей, которые может делать Javascript, это довольно неуклюжий способ (ИМХО) сделать это и узко сфокусированный на довольно специфическом наборе проблем, которыепривязаны к очень специфическим программным и аппаратным инфраструктурам.Хотя в некоторых случаях эта функциональность может быть полезной, большая часть JavaScript, который вы видите в Интернете сегодня, вообще не интересуется базами данных.

Мне не ясно, какой источник данных вы пытаетесь использоватьдля подключения, но если вы специально ищете решение для данных JavaScript, вам может понадобиться что-то вроде MongoDB и библиотеки кода, которые были разработаны специально для этого.И есть множество других JS библиотек , которые связаны с реляционными данными или базами данных, и вы можете искать такие места, как npm .Или вы можете объединить JavaScript с языками, которые по своей природе включают функциональность базы данных, и PHP является отличным примером этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...