Я хочу создать своего рода «стек», и каждый раз, когда я удаляю элемент, лист удаляет пустые ячейки. Очевидно, я не могу использовать функцию фильтра.Проблема с 2D-матрицей?
У меня возникли проблемы с чтением массива, созданного для этой цели.
Мой очень псевдокод: я создаю пустой массив, получаю все значения (включая пустые), заполняю мой массив всеми значениями, кроме пустых, и, наконец, очищает стек и устанавливает значения с помощью моего массив.
Вот мой код:
function updateStack() {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheetByName("main");
var zone = sheet.getRange(1, 1, 1, 10);
//seems that .getValues() returns a 2d array
var values = zone.getValues();
var j = 0;
var data = new Array();
for (var i = 0 ; i < 10 ; i++) {
//the problem seems to be here : I can't access the 2d array. After reading the debugging console about 1000 thousand times
// I discovered the 2 pairs of []
//I've found multiple ways to detect empty cells. Not sure if this is the right one. I've tried the .length = 0 trick, but something
// was wrong, maybe because of the "2dimensionality"
if (values[i] != "") {
data[j] = values[i];
j = j++;
} else {
// do nothing if the cell contains nothing
}
//not sure if I have to use return ! Don't know where to put it exactly too...
return data;
zone.clear();
//length of range must be the same as the array's length
zone = sheet.getRange(1, 1, 1, data.length);
zone.setValues(data);
}
}
Есть много комментариев в моем коде, я надеюсь, вы поймете. Ссылка на мой лист: http://bit.ly/1JiWutn
Благодарим за любую помощь!
Я понял это до тех пор, пока вы не упомянете о снятии пустых ячеек ... Возможно, вы захотите включить некоторый промежуточный шаг/информацию. –
Спасибо, что указали это. Я отредактировал его, надеюсь, теперь это яснее. –