Исключить строки с пустыми ячейками в getvalue () Google Sheets - PullRequest
2 голосов
/ 30 сентября 2019

Я создал лист с функцией отправки данных, но я хочу, чтобы он игнорировал строки, где в строке есть пустая ячейка. Лист отправки выглядит следующим образом:

Date | Name | Number | Reason
-----------------------------
123  | AAA  | 321    | xyz
-----------------------------
123  | BBB  | 321    | xyz
-----------------------------
123  | CCC  |        | xyz
-----------------------------
123  | DDD  | 321    | xyz

Это будет дословно переведено на другой лист, но я бы хотел, чтобы скрипт игнорировал 3-ю строку, поскольку в столбце чисел он пуст.

Вот как я настраивал скрипт.

function RaidDKPedit() {
  var sss = SpreadsheetApp.getActiveSpreadsheet();
  var ss = sss.getSheetByName('DKP-Raid');

  var data_range = ss.getRange('A2:D101'); 
  var data_data = data_range.getValues();
  var data_clean = ????;

  var dkp_range = ss.getRange('C2:C101');

  var tss = SpreadsheetApp.getActiveSpreadsheet();
  var ts = tss.getSheetByName('DKP-History');

  var tarrow = ts.getLastRow(); 

  ts.getRange(tarrow+1, 1,data_clean.length,4).setValues(data_clean);
  dkp_range.clear();

}

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

Вот как его нужно добавить на другой лист внизу таблицы

Date | Name | Number | Reason
-----------------------------
123  | AAA  | 321    | xyz
-----------------------------
123  | BBB  | 321    | xyz
-----------------------------
123  | DDD  | 321    | xyz

Ответы [ 2 ]

2 голосов
/ 30 сентября 2019

Если вы хотите отфильтровать строки с пустой ячейкой в ​​столбце C, попробуйте:

var data_clean  = data_data.filter(function (r) {return r[2]})
1 голос
/ 30 сентября 2019

Это другой подход:

function copyValues (){

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('DKP-Raid');
  var range = sheet.getDataRange().getValues();

  var newRange = []
  rows = 0;
  for (var i=0; i<range.length; i++){
    var row = range[i];
    //If the column 2(C) is empty the line is skipped
    if (range[i][2]){
      newRange.push(range[i]);
      rows+=1;
    }
  }

  var dest_sheet = ss.getSheetByName('DKP-History');
  dest_sheet.getRange(1, 1, rows, 4).setValues(newRange)
}

Вы можете использовать getDataRange , чтобы извлечь все ячейки с данными в электронной таблице. Это функционально эквивалентно созданию диапазона, ограниченного A1 и (Range.getLastColumn (), Range.getLastRow ()).

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