Может кто-нибудь помочь мне решить эту проблему?
Прилагается пример листа того, что я пытаюсь сделать:
https://docs.google.com/spreadsheets/d/12w4rGArGi1I1wlpm5yJJtT5AAlMM4LcZC31_DpP6jZQ/edit?usp=sharing
Я пытаюсь сдвинутьсястроки, которые содержат «PO» в моем выборе данных.(см. функцию сдвига)
Это должно измениться с этого:
на это:
Я написал скрипт, но он не работает, и я не получаю сообщение об ошибке.
У меня такое ощущение, что я пытаюсь "+1 "мой массив, чтобы компенсировать мои значения.Пожалуйста, помогите!
Вот мой текущий сценарий:
function shift() {
try{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var as = ss.getActiveSheet();
var ar = as.getActiveRange();
var vals = ar.getValues(); // get values from the active (selected) range...... intended use is to draw a selection where the PO BOX substring is in the leftmost column
// SpreadsheetApp.getUi().alert(vals); //for checking values
var r; // variable for rows
for (r = 0; r < vals.length; r++){ // for each row, up to the last row (iterate over all rows from top to bottom)
if(vals[r][0].indexOf("PO") != -1){ // if first column in each row contains "PO"
SpreadsheetApp.getUi().alert("found a PO BOX"); // make annoucement
var c; // variable for columns
var cols = []; // array for column data (for debugging)
for (c = 0; c < vals[r].length; c++){ // for each columns in row (iterating over each cell in row from left to right)
cols[c] = vals[r][c]; // add the current cell value to an array
vals[r][c+1] = vals[r][c]; // take the value from the current cell and assign it to the next cell (+1 to the column)
}
SpreadsheetApp.getUi().alert(cols); // show me the data that cas changed
}
}
ar.setValues(vals); // set new values to active range
}
catch(err){
SpreadsheetApp.getUi().alert(err);
}
}
Ожидания:
получить диапазон данных (мой предполагаемый диапазон тестирования B:От 1 до D: 12)
итерация по каждой строке и по каждой строке итерация по каждой ячейке (столбцу)
Если самопервая ячейка в текущей строке (vals [r] [0]) содержит подстроку «PO», затем я хочу изменить значения этой строки таким образом, чтобы они все смещались на один столбец, и оставить самую первую ячейку какпустая строка
Я изменяю значения, заменяя текущие значения теми же значениями, НО +1 к строке столбцов (vals [r] [c]) = строка (vals [r][c + 1])
Realit (EDIT) y:
Превышена ошибка ограничения памяти ... возможен бесконечный цикл ... Думаю, это может быть из-заЯ добавляю столбец, который не существует в диапазоне данных, но как бы я обойти эту проблему?
решено !!!!
После долгих проб и ошибок, я могу сответ (опубликовано в его ответах)
чувствую себя прекрасно, впервые решив свою проблему!