Скрипт Google Apps - сопоставление двух строк - PullRequest
1 голос
/ 30 октября 2019

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

function ign_list() {
  var nRange = SpreadsheetApp.getActive().getRangeByName("player")
  return nRange.getValues()
}


function sheet_list() {
  var out = new Array()
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  for (var i=0 ; i<sheets.length ; i++) out.push( [ sheets[i].getName() ] )
  return out   
}

function new_sheet() {
  var ui = SpreadsheetApp.getUi();
  var sheet_names = sheet_list();
  var ign_names = ign_list();

  for (var i=0; i<ign_names.length; i++){
    for (var n=0; n<sheet_names.length; n++) {
      if (ign_names[i] !="") {
        if (ign_names[i] == sheet_names[n]) {
          ui.alert(ign_names[i]+" Equal "+sheet_names[n])
        } else {
          ui.alert(ign_names[i]+" Not Equal "+sheet_names[n])
        }
      }
    }
  }
}

У меня есть лист с именем Raw Stats и в диапазоне я имею ячейку сЗначение Raw Stats, но при сравнении говорит, что оно не равно.

Есть ли другой способ сравнения строк?

Использование indexOf

for (var i=0; i<ign_names.length; i++){
    if (sheet_names.indexOf(ign_names[i][0]) != -1) {
      SpreadsheetApp.getActiveSpreadsheet().insertSheet().setName(ign_names[i][0]);
    } else {
    }
  }

Всегда возвращать -1, даже когдато же значение

1 Ответ

0 голосов
/ 30 октября 2019

Вы используете метод getValues(). Это возвращает массив строк.

Даже если ваш диапазон скомпрометирован только с одним столбцом, результатом будет: [[A1],[A2],[A3],...]

Это можно исправить, сгладив массив илис учетом ign_names[i][0].

Надеюсь, это поможет

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