Google scripts - проблема со строкой против ячейки в качестве параметра функции - PullRequest
0 голосов
/ 08 марта 2019

Я изучаю скрипт Google, когда сталкиваюсь с проблемой, для которой не могу найти решение.

У меня есть функция, которая принимает несколько нескольких строк и одну ячейку в качестве параметров.
Я предполагаю, что передача ячейки не совпадает с передачей ее значения (слишком длинная строка)

Пожалуйста, найдите прикрепленный код:

//return id assigned to data(cell) sheetname
function findInColumn(column, data, colName, sheetname) {

  /*
  data = cell (cell value is 'bag_backpack.png') does not work

  var range = SpreadsheetApp.getActiveRange();
  var col = range.getColumn();
  var row = range.getRow();
  var range2 = SpreadsheetApp.getActiveSheet().getRange(row,col+1);
  data = range2.getValue(); (cell value is 'bag_backpack.png')  <---fail too

  data = 'bag_backpack.png';  <---works
  */



  var sheet = SpreadsheetApp.getActive().getSheetByName(sheetname);
  var column = sheet.getRange(column + ":" + column); // like A:A

  var values = [];
  for (var index = 0; index < column.getValues().length; index++) {
    values.push(column.getValues()[index][0])
  }

  var colIndex = getByName(colName, sheetname);
  var rowIndex = values.indexOf(data);
  //grab id value of data
  var range = sheet.getRange(rowIndex+1,colIndex+1);
  var data = range.getValue();

  return data
}

Хотя я ценю ваши отзывы и нуждаюсь в них, я прошу вас иметь в виду, что я в лучшем случае новичок, и я потратил несколько часов на поиски, прежде чем спросить здесь.
Спасибо за вашу помощь.

Редактировать : bag_backpack.png - это содержимое ячейки, которую я ищу в столбце, чтобы получить номер строки указанной ячейки.

 var rowIndex = values.indexOf(data);

Возвращает нужный мне индекс.

Однако ... если я передаю в функцию ячейку вместо строки, например, ячейку в другом месте с bag_backpack.png в качестве содержимого, или даже получаю из нее указанное значение:

  var range = SpreadsheetApp.getActiveRange();
  var col = range.getColumn();
  var row = range.getRow();
  var range2 = SpreadsheetApp.getActiveSheet().getRange(row,col+1);
  data = range2.getValue(); (cell value is 'bag_backpack.png')  <---fail too

В указанном случае:

     var rowIndex = values.indexOf(data);

выдает -1 вместо желаемого индекса.

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

Я хочу поблагодарить всех за то, что нашли время ответить.

проблема была не в коде, а в том, что некоторые из первых имен файлов имели заглавные буквы в id, в листе имен, а в листе подшивки - нет. (не менее 5 часов на Tent.png / tent.png)

Я прилагаю ссылку на свою законченную работу в надежде, что это кому-нибудь пригодится.

https://docs.google.com/spreadsheets/d/1jCy1I4r6PeY3kUWrhNno2XO18Jghq6_b1kyN3AflidM/edit?usp=sharing

0 голосов
/ 08 марта 2019

Большая часть того, что у тебя есть, не имеет смысла для меня.Я предполагаю, что это то, что вы хотите.Поскольку я не могу понять, что вы хотите, возможно, вы можете сказать мне, что я пропустил.

function findInColumn(column,sheetname) {
  var sh=SpreadsheetApp.getActive().getSheetByName(sheetname);
  var rg=sh.getRange(column + ":" + column); /
  var vA=rg.getValues();
  var values = [];
  for (var i=0;i<vA.length; i++) {
    values.push(vA[i][0]);
  }
  return values
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...