insertColumnsAfter создает больше столбцов, чем запрошено

Я прошу добавить столбец в электронную таблицу, скопировав текущий последний (формулы и все) в новый последний столбец:

function addCol(ss,shName) {
  var sh = ss.getSheetByName(shName), lRow = sh.getLastRow(); 
  var lCol = sh.getLastColumn(), range = sh.getRange(1,lCol,lRow,lCol);
  sh.insertColumnsAfter(lCol,1);
  range.copyTo(sh.getRange(1, lCol+1, lRow, lCol+1), {contentsOnly:false});
  return sh;
}

Вызов этой функции добавляет в электронную таблицу два столбца. Код все еще работает (устанавливает новый столбец после текущего последнего активного столбца... но также добавляет пустой столбец после этого), но пытается сохранить минимальное количество столбцов, и это увеличивает количество столбцов в два раза больше запросов .

... У меня есть "зеркальная" функция, которая вставляет строку внизу электронной таблицы и вставляет только одну по запросу. Итак, я предполагаю, что это какое-то нормальное поведение Google для добавления столбцов без причины.

Любые идеи, почему каждый раз, когда я прошу, создаются 2 столбца?


person Chris Worley    schedule 15.03.2019    source источник


Ответы (1)


Чтобы скопировать последний столбец в новый последний столбец, попробуйте следующее:

function addCol(ss,shName) {
  var sh = ss.getSheetByName(shName), lRow = sh.getLastRow(); 
  var lCol = sh.getLastColumn(), range = sh.getRange(1,lCol,lRow,1);
  sh.insertColumnsAfter(lCol,1);
  range.copyTo(sh.getRange(1, lCol+1, lRow, 1), {contentsOnly:false});
  return sh;
}
person ra89fi    schedule 15.03.2019
comment
Ааа... проблема в том, что последние два аргумента - это количество строк и столбцов, а не конец диапазона... Спасибо - person Chris Worley; 16.03.2019