我有一个Google表格,每天最多可以累积100个条目。当用户添加新条目时,脚本会将新数据放入最后一行(请参见下面的代码段)。但是,屏幕上仅可见12行,因此一旦填充了这些行,用户将看不到新条目。
如何在每次输入数据时使用户看到最后一行?
我是google-apps-script的新手,因此感谢您提出任何建议。我相信onEdit
触发器将不再与sheet.setActiveRange()
一起使用,因此我正在寻找一种解决方法。如果没有简单的解决方案,我将采取一个笨拙的解决方案。例如,可以使用脚本来隐藏最后一行上方的行吗?
var ss = SpreadsheetApp.getActiveSpreadsheet();
var SHEET_NAME = 'Sheet1' // Name of current sheet
var sheet = ss.getSheetByName(SHEET_NAME);
var dataCell = sheet.getRange('A1');
var lastRowNumber = sheet.getDataRange().getNumRows();
var newData = dataCell.getValue().split(",");
var lastRow = ss.getLastRow();
sheet.appendRow(newData);
答案 0 :(得分:1)
找到了一个解决方案:setActiveRange(lastRow + 2,lastColumn)。向下滚动足够远,而无需获取附加行的范围。额外的优势是它可以在添加行之前滚动,因此用户可以看到输入的数据。
function onEdit(e) { // Puts csv user data into Sheet1
var ss = SpreadsheetApp.getActiveSpreadsheet();
var SHEET_NAME = 'Sheet1' // Name of current sheet
var sheet = ss.getSheets()[0];
var dataCell = sheet.getRange('A1');
var newData = dataCell.getValue().split(",");
// Gets the address of the very last cell of this sheet
var lastRow = sheet.getLastRow();
var lastColumn = sheet.getLastColumn();
// Scrolls to make sure user can see 2 rows below the current last cell
var lastCell = sheet.getRange(lastRow+2, lastColumn);
// Puts user entered data into a new row at the bottom of the spreadsheet
sheet.appendRow(newData);
sheet.setActiveRange(lastCell);
}
答案 1 :(得分:0)
您可以通过将1添加到最后一行并activate来获得新添加的范围:
var lastRow = ss.getLastRow();
sheet.appendRow(newData);
sheet.getRange("A" + (lastRow+1)).activate();//activate the newly appended row's A cell