当列编号低于目标时,moveColumns未移动到正确的位置



我目前正在使用moveColumns((函数来移动一列,只要它没有作为列J(10(放置。当列移动到较高位置时,函数会正确地将列移回J。但是,当列放置在较低位置时,列会移动到I。

我的脚本目前如下:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var dataName = "Data";
var dataSheet = ss.getSheetByName(dataName); // Data sheet
var barOnePos = 10;
var barOnePosA1Notation = columnToLetter(barOnePos);
var barOneName = "Royalty Splits / Rights Management";
var currBarOnePos = getColumnId(dataSheet, barOneName);
var currBarOnePosA1Notation = columnToLetter(currBarOnePos) + "1";
Logger.log(currBarOnePos);
Logger.log(currBarOnePosA1Notation);
if (currBarOnePos != barOnePos) {
SpreadsheetApp.getUi().alert(""" + barOneName + "" should be column " + barOnePosA1Notation + ". This will be fixed automatically.", SpreadsheetApp.getUi().ButtonSet.OK);
dataSheet.moveColumns(dataSheet.getRange(currBarOnePosA1Notation), barOnePos);
}
}

有人能解释一下为什么会这样吗?

修改点:

  • 我认为在When the column is moved to a higher position, the function correctly moves the column back to J.的情况下;J";不移动。这样,柱将移动到正确的位置
  • 另一方面,在when the column is placed at a lower position, the column is moving to I instead.的情况下,例如,当列";A";被移动到列"0";J";,从列"1"下方的列减少一列;J";。
    • 我认为你问题的原因就是因为这个

为了将列移动到正确的位置,按如下方式修改脚本如何?

发件人:

dataSheet.moveColumns(dataSheet.getRange(currBarOnePosA1Notation), barOnePos);

收件人:

var srcCol = dataSheet.getRange(currBarOnePosA1Notation);
dataSheet.moveColumns(srcCol, srcCol.getColumn() < barOnePos ? barOnePos + 1 : barOnePos);

最新更新