【问题标题】:Google app script - Getting last sheet row updatedGoogle 应用程序脚本 - 更新最后一个工作表行
【发布时间】:2020-03-27 15:12:16
【问题描述】:

我有一个与 Google 表格相关联的脚本,它在提交 Google 表单后调用。

实际上我可以获得所有行或最后一行,但如果更新了一个表单答案,我需要找到更新的这一行以进行处理。

有没有办法做到这一点?

这是我的两种情况:

// Getting last row data
function getSpreadSheetLastRowData() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var row = sheet.getLastRow();
  return sheet.getRange('A'+row+':BG'+row).getValues();
}

// Getting all rows data
function getSpreadSheetAllData() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var row = sheet.getLastRow();
  return sheet.getRange('A2:BG'+row).getValues();
}

【问题讨论】:

  • 您好 Jérémy,您想在表单提交后立即自动获取最后更新的行吗?
  • 在提交谷歌表单时,它触发了谷歌应用脚​​本,我想获取更新的行(如果编辑了一个答案)或最新的行(如果有新的答案)。

标签: google-apps-script google-sheets-api


【解决方案1】:

您需要为 onFormSubmit 事件对象编写一个事件处理程序并将其附加到您的电子表格中。

从链接到您的表单的电子表格转到Tools > Script Editor。 这里写一个函数来安装触发器:

function installTriggerToSpreadsheet() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  ScriptApp.newTrigger('sumbissionHandler')
  .forSpreadsheet(ss)
  .onFormSubmit()
  .create();
}

现在您的触发器将处理表单提交,调用电子表格上下文中的submissionHandler 函数。 这意味着您可以使用如下函数读取受影响的行:

function submissionHandler(e) {
 var affectedRow = e.range.getRow();

 // ... Apply your treatment.
}

参考资料:

Triggers

Event Objects

【讨论】:

  • 很遗憾我只能投票一次;你刚刚为我节省了大量的文档搜索。谢谢
【解决方案2】:

如果您有一个由表单提交触发的脚本,那么将事件对象称为 e。然后 e.range 是在链接工作表中编辑的范围。所以e.range.getRow() 是行,e.range.getSheet().getName() 是链接工作表的名称。

form submit object for spreadsheet

【讨论】:

  • 你有使用脚本的例子吗?我没有找到我在哪里初始化/获取 e 参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
  • 1970-01-01
  • 2021-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多