google-apps-script - 将数据放在下一个空白行中,选择错误的列
问题描述
我确定这很简单,但我试图让它将数据粘贴到 U 列第一个空白单元格中。它目前从单元格 A28 开始粘贴在 A 列中。
function Update() {
var sheet = SpreadsheetApp.getActiveSheet();
var values = sheet.getRange("U:U").getValues();
var maxIndex = values.reduce(function(maxIndex, row, index) {
return row[0] === "" ? maxIndex : index;
}, 0);
sheet.setActiveRange(sheet.getRange(maxIndex + 2, 1));
sheet.getRange('L28:S').copyTo(sheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
};
解决方案
我相信你的目标如下。
- 您希望将值放在“U”列的第一个空白处作为目标范围。
- 源范围为
L28:S
。
修改点:
- 在您的脚本中,目标范围是
sheet.getRange(maxIndex + 2, 1)
. 这样,值将复制到“A”列。我认为这是您的问题的原因。 - 在您的情况下,我认为这
getNextDataCell
可能可以使用。
当你的脚本被修改后,它变成如下。
修改后的脚本:
function Update() {
var sheet = SpreadsheetApp.getActiveSheet();
// I modified below script.
var range = sheet.getRange("U1:U" + sheet.getLastRow());
var temp = range.getNextDataCell(SpreadsheetApp.Direction.DOWN);
var destRange = temp.getRow() == sheet.getMaxRows() && sheet.getRange("U1").isBlank() ? sheet.getRange("U1") : temp.offset(1, 0);
// destRange.activate(); // When you use this line, the start of copy is activated.
sheet.getRange('L28:S').copyTo(destRange, SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
}
参考:
推荐阅读
- java - 带参数并要求月份的方法?
- vba - Microsoft Word:从 AzureAD/Microsoft 365 配置文件获取用户信息
- spring-cloud - spring cloud gateway 集成 spring cloud sleuth 比单独使用 spring cloud gateway 慢 22%
- html - 如何在 EJS 中设置动态样式属性?
- c# - 获取布尔值作为字符串
- java - 使用反应式 Java,仅当通量为空时才插入元素
- python - 这里有什么不同?我只是不支持它
- javascript - Javascript弹出窗口?
- visual-studio - 在 .Net 5 上使用 EnvDTE CodeModel 进行重构
- c# - 如何从子实体框架核心获取数据?