簡體   English   中英

Google AppScripts 僅將 Email 發送到單元格值或按鈕單擊

[英]Google AppScripts Send Email to on cell value or button click only

我剛剛開始使用 AppScripts 中的 Javascript,我正在嘗試拼湊一個系統,該系統將根據我們擁有的居民類型(所有者、租戶、續訂)發送電子郵件。 現在,當我運行腳本或單擊分配的“sendEmails”按鈕時,此代碼正在向電子表格上的每個人發送相同的 email。 我希望同事在為他們單獨預約后能夠將電子郵件發送給適當的居民類型。 我有一個不同類型的數據驗證下拉列。 有沒有辦法在單擊下拉列表中的居民類型時,根據居民類型相應的 email 將 go 出來? 任何幫助表示贊賞,在這里完成新手。 但這確實會極大地幫助我們的工作流程。

function sendEmail() {

//Email for New Tenant Only

  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Schedule Residents");
  var lr = ss.getLastRow();

  
  var templateText = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Template").getRange(1,1).getValue();
  
    for (var i = 2;i<=lr;i++){
      var currentEmail = ss.getRange(i, 11).getValue();
      var currentDate = ss.getRange(i, 1).getValue();
      var currentName = ss.getRange(i, 3).getValue();
     
      var messageBody = templateText.replace("{name}",currentName).replace("{date}",currentDate);
      var subjectLine = "Reminder: " +  currentDate + " Upcoming Appointment";
     
      MailApp.sendEmail(currentEmail, subjectLine, messageBody);
      
    }
  
  }

您可以使用允許您在工作表中進行編輯時發送 email 的onEdit

  • Triiger 允許您使用與導致觸發器觸發的事件相關聯的事件對象
  • 那就是您可以查詢已編輯的范圍,新值是什么等。
  • 您可以實現在設置常駐類型時自動發送 email 並動態檢索正確的模板
  • 對於發送限制,由於限制,您不能使用簡單的 onEdit 觸發器
  • 相反,手動綁定到您的 function 一個可安裝的 onEdit 觸發器
  • 請注意,如果您嘗試手動運行包含事件對象 ( e ) 的函數,它們會出錯 - 它們會在觸發事件時自動運行

示例 function 綁定到觸發器:

function sendOnEdit(e) {
  
  //Email for New Tenant Only
  var ss = e.range.getSheet();
  var typeColumn = 4;
  if (sheet.getName() == "Schedule Residents" && e.range.getColumn() == typeColumn){
    var row = e.range.getRow();
    var value = e.value;
    var templates = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Template").getRange(1,1,3,1).getValues();
    var templateText;
    
    switch (value){
      case "Email New Owner":
        templateText = templates[1][0];
        break;
      case "Email New Tenant":
        templateText = templates[0][0];
        break;
      case "Email Renewal":
        templateText = templates[2][0];
        break;              
    }
   
      var currentEmail = "ziganotschka1@egs-sbt015.eu"//ss.getRange(row, 11).getValue();
      var currentDate = ss.getRange(row, 1).getValue();
      var currentName = ss.getRange(row, 3).getValue();
      
      var messageBody = templateText.replace("{name}",currentName).replace("{date}",currentDate);
      var subjectLine = "Reminder: " +  currentDate + " Upcoming Appointment";
      
      MailApp.sendEmail(currentEmail, subjectLine, messageBody);
  }
}

暫無
暫無

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

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