【问题标题】:How to get new row number after user inserted row in Google Apps Script用户在 Google Apps 脚本中插入行后如何获取新行号
【发布时间】:2021-03-09 03:38:16
【问题描述】:

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

我试图通过活动的 SpreadSheet 对象来获取它,但没有运气,它总是返回 0, 我认为这可能是一个时间问题,因为在您插入该行之后,新行被选中。所以我什至尝试使用 setTimeout(),1000);添加新行后尝试触发 get 行,但 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());
}

【问题讨论】:

  • 您需要告诉我们您使用的是什么类型的触发器。 OnEdit 不会告诉您,但 onChange 会告诉您,但如果用户插入许多行,您可能无法获得整个范围。
  • 我正在使用 onChange 触发器,因为 OnEdit 事件不返回更改类型。我的代码正在运行,但 r.getRow() 始终返回 0。

标签: google-apps-script


【解决方案1】:

传递给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.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 2023-03-08
    相关资源
    最近更新 更多