簡體   English   中英

如何使用數據獲取最后一行中特定列的值

[英]How to get a specific column's value in the last row with data

我是JS的新手,嘗試創建一個腳本,每次填寫表格時都會觸發電子郵件。 電子郵件需要有一個非常具體的標題和正文,該標題和正文是在我的工作表中創建的。

具體來說,我需要將主題行設置為數據的最后一行中的第I列,並將我的電子郵件正文存儲為F列。我能夠獲取腳本來選擇正確的最后一行,但我一直在努力尋找方法獲取正確的列值。

目前,我已經嘗試了一段代碼,但出現錯誤

TypeError:在對象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);

}

讓我們糾正函數的第二部分:

// Send Alert Email.
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 1");
var lastRow = sheet.getRange("A1").getDataRegion().getLastRow();
var message = sheet.getRange(lastRow, 7).getValue(); // (F column is 7-th) KMS Survey Text
var subject = sheet.getRange(lastRow, 9).getValue(); // (I column is 9-th) KMS Survey Title
MailApp.sendEmail(emailAddress, subject, message);

該錯誤是由於不正確使用getLastRow()方法引起的。 實際上,它返回一個數字,而不是對象。 有了數字,我們可以引用所需的最后一行單元格並獲取其值。

另外,當范圍包含單個單元格時,我建議使用getValue()方法而不是getValues()

這將完全滿足您的需求。 我已經清理了一些變量,因為先不要激活電子表格,然后是工作表,再到范圍等。 您可以定義一次,然后使用定義的變量隨意獲取不同的范圍。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM