2

在用户在 Google SpreadSheet 中添加新行后,我正在尝试做一些事情。我创建了一个运行我的函数“nieuweregel”的触发器,我想获取新行的行号。谷歌应用程序发送的对象“事件”仅包含更改类型和用户(因此 event.source.getActiveRange() 不起作用,因为源不存在)。 了解事件

我试图通过活动的 SpreadSheet 对象来获取它,但没有运气,它总是返回 0,我认为可能是时间问题,因为在插入行后选择了新行。所以我什至尝试使用 setTimeout(),1000); 添加新行后尝试触发获取行,但 Google Apps 似乎不接受 setTimout。

有人想得到那个行号吗?

function nieuweregel(event){
  if(event.changeType == "INSERT_ROW")
    var ss = SpreadsheetApp.getActiveSpreadsheet();  
  // var r = event.source.getActiveRange() 
  var r = ss.getActiveRange();
  ss.toast('new row nr = '+r.getRow());
}
4

1 回答 1

0

除了类型和其他一些属性之外,传递给 的事件onChange似乎没有任何信息。

您可以改为检查活动工作表和活动范围。以下函数显示新插入的行号。

function onChange(e) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getActiveRange();
  var row = range.getLastRow();

  SpreadsheetApp.getActiveSpreadsheet().toast(">" + e.changeType + " " + row + " " + sheet.getName()) ;
} // Added: Please install OnChange event trigger to this function.
于 2021-03-08T19:38:16.883 回答