我正在尝试使用App Scripts编写一些代码(通过每日触发器),将数据从单元格F13:G13复制/粘贴到第I列中的第一个空单元格 . 这是我的代码:
function TrackCurrentValues()
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getSheets()[0];
var lastRow = getLastRowInColumn(sheet, 'I:I');
// Logger.log('I' + parseInt(lastRow + 1));
var pasteRange = sheet.getRange('I' + parseInt(lastRow + 1) );
pasteRange.activate();
// now that we have the first empty cell in column I, paste the values we found from cells F13:G13
spreadsheet.getRange('F13:G13').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
};
function getLastRowInColumn(sheetObj, range) {
return sheetObj.getRange(range)
.getValues().filter (String).length + 1
}
当它运行时,会发生的事情是从正确的位置复制数据,但它总是粘贴到单元格A1 . 此外,粘贴的数字以英镑英镑字符(£)为前缀 .
可能有什么不对?如果我手动运行它(通常) . 主要的是它没有找到I中的空单元格:I .
1 回答
这段代码应该做你想要的:
在你的字符问题上,该范围可能被格式化以显示该货币符号 . 要更新此选项,请选择范围,转到工具栏并选择“格式”>“数字”>“指定所需的格式”
另外的想法:i)你将一个添加到lastRow变量两次(一次在getLastRowInCOlumn函数中,再次在pasteRange定义中)ii)我将重新命名不使用“活动范围”来存储位置,而是将该范围存储在变量中iii)它似乎你的副本范围是2列宽,但你的pasteRange只有1列宽