【问题标题】:How to retrieve values from the last row如何从最后一行检索值
【发布时间】:2019-04-05 13:01:07
【问题描述】:

我创建了一个申请新学生 Google 帐户的表单。我想要一个表格脚本通过电子邮件向提交表单的人发送新帐户信息,该信息是通过“结果”表上的公式创建的。

function Notification() {
  // Send email notice for accounts
  var lastRow = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Results").getLastRow();
  var range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Results").getRange("A" + lastRow);
  if (range.getValue() !== "") {
    return lastRow;
  } else {
    return range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
  var AccountName = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Results").getRange("H" + lastRow);
  var Password = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Results").getRange("I" + lastRow);
  var PW = Password.getValue();
  var Account = AccountName.getValue(); 
  // Fetch the email address
  var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Results").getRange("G" + lastRow);
  var emailAddress = emailRange.getValues();
// Send Alert Email.
   var message = 'Account Request - Account Name: ' + Account + ' Password: ' + PW; // Second column
   var subject = 'Google Account Request';
MailApp.sendEmail(emailAddress, subject, message);
     }

此脚本在新的表单提交时触发。尝试从查询的最后创建行中提取值到“结果”表,使用 lastRow 从选择列中查找最新条目行。脚本运行没有错误,但没有发送电子邮件,告诉我它没有获取值或返回空值。 This is the sheet its pulling data from

【问题讨论】:

  • 请编辑以提出具体问题。现在,没有人知道你在问什么。您的问题应该集中在您所看到的问题上,并针对特定问题寻求解决方案。请花一些时间阅读帮助页面,尤其是名为What to askWhat not to ask 的部分。
  • 使用事件对象或Sheet 方法,为您提供包含一些数据的最底部行号,然后获取您关心的特定行列交叉点。
  • 这就是问题所在。怎么样?
  • 我已经搜索并阅读了 100 多个资源、对此类帖子和论坛的回复,但尚未找到能够回答此问题的内容。告诉我“google it”根本没有帮助。事实上,你粗鲁地假设我没有先看的时间比根本不回复更有用。指向您所指内容的链接会更有帮助。
  • 克里斯,欢迎您使用 StackOverflow,但恕我直言,您超出了标准。有非常有经验的人(比我更多)非常愿意帮助你,但我们希望你已经研究过这个问题。在这种情况下,“最后一行中的 google sheet 脚本值”会产生大量的主题响应,这就是为什么对您的响应如此简短。如果您找不到相关研究,那么期望您解释为什么您的情况与您发现的情况不同是合理的。

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


【解决方案1】:

您只发送第 2 行,因为您只检索一个值(Password.getValue()AccountName.getValue())。考虑getValuegetValues 之间的区别。

另一方面,通过声明getRange("H2:H")(“帐户名称”)之类的范围,您可以在电子表格中包含每一行,包括有内容和没有内容的行。

如何让它从最后创建的行中提取值?

有两种选择:

  • getlastRow()(“Sheet”与“Range”版本)“返回有内容的最后一行的位置”doc ref here。事实上,该文档项有一个很好的示例,说明如何使用命令声明 Range。
  • 还有另一个(非常有用的)utility described on StackOverflow 是我的最爱。这描述了一列中包含内容的连续行数。

我建议您使用getRange(row, column, numRows, numColumns) 声明范围。
“行”已使用上述方法之一确定,“numRows”=1。然后该范围的getValues 将仅包含该行中的值,并且您的电子邮件将仅与该行相关。

【讨论】:

    猜你喜欢
    • 2013-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    相关资源
    最近更新 更多