Сравнение подстроки в столбцах в скрипте Google Apps - PullRequest
0 голосов
/ 07 мая 2020

У меня есть большой набор данных, вставленный в Google Таблицы. Я хочу сравнить две колонки на этом листе. Первый столбец заполнен длинными строками, меня интересует только первый символ в каждой ячейке в этом столбце.

Второй столбец является текстовым. Я хочу вставить данные на новый лист , если строка в столбце A начинается с числа (не буквы) и текст в столбце B - «Early».

Моя задача - использовать Javascript, чтобы получить только подстроку из 1 символа для столбца A. Ошибка: «TypeError: str.substring не является функцией». Я также пробовал slice (), но безрезультатно. Разве это не поддерживается в скрипте приложений?

Как я могу выделить эти первые символы, а затем сравнить их с другим столбцом?

Затем мне также нужно sh строк, соответствующих этому критерию в обоих столбцах на новую вкладку.

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('data');
  var str = sheet.getRange('A:A').getValues(); 
  var char = str.substring(0,2);
  var stage = sheet.getRange('B:B');
  var endColumn = sheet.getLastColumn();
  var value_stage = (stage.getValues());
  var value_char = (char.getValues());

  var csh = ss.getSheetByName('new_sheet'); //destination sheet
  var data = [];
  var j =[];
    for (i=0; i<value_char.length;i++) {
      if 
      (
        (
          ( value_char[i] == '0') ||
          ( value_char[i] == '1') ||
          ( value_char[i] == '2') ||
          ( value_char[i] == '3') || etc... )

       &&
          ( value_stage[i] == 'Early')
)

  data.push.apply(data,sheet.getRange(i+1,1,1,endColumn).getValues());
  j.push(i);
 }
 }
 csh.getRange(csh.getLastRow()+1,1,data.length,data[0].length).setValues(data);

ОБРАЗЕЦ ДАННЫХ НИЖЕ:

**ID**                                **Stage**  **Name**
A               texthere                Early   Bob
B               abcdefgh                Late    Sally
52              texthere                Early   Jim
C               thesdfas                Late    Allan
00              tsdfsdfd                Late    Susan
11              qqwerrww                Early   Ryan
Q               tsdfsagd                Early   Sarah
98              fdsafads                Early   Evan
09              fdasfdsa                Early   Paul
10              abcdefgh                New     Megan
10              abcdefgh                Early   Cooper





NOTE:  in the real dataset, columns A and B are actually K & L  

И столбец ID имеет эти пробелы между ранней частью строки и конец. Это то, что я пытаюсь отрезать

1 Ответ

1 голос
/ 07 мая 2020

Попробуйте следующее:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh=ss.getSheetByName('data');
var svs=sh.getRange(1,2,sheet.getLastRow(),2).getValues();
var csh=ss.getSheetByName('new_sheet');
var data=[];
var j=[];
svs.forEach(function(r,i){
  if((r[0].slice(0,1)=='1' || r[0].slice(0,1)=='2') && r[1]=='Early') {
  //do what you want in here
  }
});
...