我正在尝试创建一个Google脚本功能来创建新的一天。 我想要的是将 BO 列的内容复制到最后一个空列旁边的 CA ,如图所示。
在脚本中,我有以下代码:
var columnsPerDay = 13;
var sheetName = 'Principal';
function NuevoDia() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getSheetByName(sheetName);
var lastDayColumn = sheet.getLastColumn();
var lastDayRow = sheet.getLastRow();
var lastDayRange = sheet.getRange(1, lastDayColumn, sheet.getMaxRows(), columnsPerDay);
var nextDayRange = sheet.getRange(1, lastDayColumn + 1, sheet.getMaxRows());
lastDayRange.activate();
// var lastDayRangeValues = lastDayRange.getValues();
//lastDayRange.copyTo(sheet.getRange(1, lastDayColumn + 13, sheet.getMaxRows()))
//lastDayRange.activate();
/*
var lastDayRangeValues = lastDayRange.getValues();
nextDayRange.setValues(lastDayRangeValues);
*/
lastDayRange.copyValuesToRange(sheet, lastDayRange.getLastColumn()+1, lastDayRange.getLastColumn()+columnsPerDay, 13, lastDayRange.getLastRow())
};
如您所见,代码中有很多注释,但尝试失败的次数不同...
答案 0 :(得分:1)
拷贝范围被错误引用。 getRange(start row, start col, # rows, # cols)
。您的范围是:开始行= 1,开始col =最后一个col,#行=总行,#cols =13。这就是为什么只复制最后一列的原因。
更改:
var lastDayRange = sheet.getRange(1, lastDayColumn, sheet.getMaxRows(), columnsPerDay);
至:
var lastDayRange = sheet.getRange(1, lastDayColumn - 12, sheet.getMaxRows(), columnsPerDay);
(再次查看您的图片后,我从评论中更改了lastDayColumn
的实现,并意识到您不一定从原点开始工作。)
我认为您还可以简化复制步骤。发件人:
lastDayRange.copyValuesToRange(sheet, lastDayRange.getLastColumn()+1, lastDayRange.getLastColumn()+columnsPerDay, 13, lastDayRange.getLastRow())
收件人:
lastDayRange.copyTo(sheet.getRange(1, lastDayColumn +1));
(除非您尝试一次粘贴多天,否则copyValuesToRange()
可能会更好,但是可以清理实现)
lastDayRange.copyValuesToRange(sheet, lastDayColumn +1, lastDayColumn +columnsPerDay, 1, lastDayRange.getLastRow())
让我知道这是否存在任何问题。