insertColumnsAfter创建的列比请求的多

时间:2019-03-15 19:51:19

标签: google-apps-script google-sheets google-sheets-api

我要在电子表格中添加一列,将当前的最后一个(公式和所有)复制到新的最后一列:

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列?

1 个答案:

答案 0 :(得分:0)

要将上一栏复制到新的上一栏,请尝试以下操作-

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;
}