javascript - 如何在数据的最后一行中获取特定列的值
问题描述
我是 JS 的新手,并试图创建一个脚本,每次填写表格时都会触发一封电子邮件。电子邮件需要有一个非常具体的标题和正文,这是在我的工作表中创建的。
具体来说,我需要我的主题行是最后一行中包含数据的 I 列,我的电子邮件正文是 F 列。我能够让脚本选择正确的最后一行,但我正在努力弄清楚如何获取正确的列值。
我目前有一段我尝试过的代码,但我得到了错误
类型错误:在对象 346 中找不到函数 getValue。(第 7 行,文件“代码”)关闭
function sendEmail() {
// Fetch the email address - This is a specific email address in the sheet I need stuff to go to
var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Reference").getRange("F2");
var emailAddress = emailRange.getValues();
// Send Alert Email.
var message = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1").getRange("A1").getDataRegion().getLastRow().getValue() // KMS Survey Text
var subject = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1").getRange("A1").getDataRegion().getLastRow().getValue(); // KMS Survey Title
MailApp.sendEmail(emailAddress, subject, message);
}
解决方案
这将完全符合您的要求。我已经清理了您的一些变量,因为获取活动的电子表格,然后是工作表,然后是范围等不是好的做法。您可以定义一次,然后根据需要使用定义的变量来获取不同的范围。
function sendEmail() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var refSheet = spreadsheet.getSheetByName('Reference');
var formSheet = spreadsheet.getSheetByName('Form Responses 1');
var lastRow = formSheet.getDataRange().getLastRow();
var subject = formSheet.getRange(lastRow, 6).getValue(); //KMS Survey Text
var message = formSheet.getRange(lastRow, 9).getValue(); //KMS Survey Title
var emailAddress = refSheet.getRange("F2").getValue();
// Send Alert Email.
MailApp.sendEmail(emailAddress, subject, message);
}
而不是getRange().getDataRegion().getLastRow()
,您可以在工作表上使用getDataRange()
来获取当前在工作表上获得的整个数据范围,然后getLastRow()
在其上使用,例如:
var lastRow = formSheet.getDataRange().getLastRow();
然后使用它来获取电子邮件的数据范围,注意:getRange()
行/列从 1 开始索引,因此列 F = 6,列 I = 9:
var subject = formSheet.getRange(lastRow, 6).getValue(); //KMS Survey Text
var message = formSheet.getRange(lastRow, 9).getValue(); //KMS Survey Title
推荐阅读
- java - 无法将数据持久化到数据库
- webpack - webpack.config.js fails to load cypress BDD script
- kubernetes - Kubernetes:我什么时候需要将 /bin/sh -c 添加到我的命令中?
- firebase - Error: Bad state: field does not exist within the DocumentSnapshotPlatform
- tensorflow - Grey images being formed on application of standard UNet and keras data augmentation
- jwt - Authorize using JWT Moralis Deep index API
- python - GLPK installation problem on Windows for the pyFBA python package (although glpsol runs)
- javascript - 无法将屏幕 x,y 坐标转换为 svg 坐标
- azure - Azure Pipelines .net core 3.1 库以及对其他库的引用如何创建一个 nuget 包
- python - 通过 cron 运行时出现 ConnectionResetError