簡體   English   中英

無法使用GAS向單元格正確添加價值

[英]Unable to properly add value to a cell using GAS

我采用了以下腳本,但遇到兩個問題。

  1. 在正確的行中,“已發送電子郵件”值不會更新。 假設我向第5行的收件人發送了一封電子郵件,而不是出現在第5行的第10列中,而是在第21行的第10列中顯示了“已發送電子郵件”。
  2. 有時即使我知道電子郵件已發送出去,也根本沒有出現“已發送電子郵件”。

我已經嘗試了所有可以想到的方法,但無法使其正常工作。

//Send approval or non-approval of time off request
function sendLeaveRequestDecisions() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Form Responses 2");
  var dataRange = sheet.getRange(2,1,sheet.getLastRow()-1,sheet.getLastColumn());
  var data = dataRange.getValues();
  for (i in data) {

    var startRow = 2; //First row of data to process
    var rowData = data [i];
    var startdate = rowData [2];
    var enddate = rowData [3];
    var type = rowData [4];
    var email = rowData [5];
    var recipient = rowData [1];
    var decision = rowData [7];
    var comments = rowData [8];
    var emailstatus = rowData [9]
    var emailPattern = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|aero|asia|biz|com|coop|edu|gov|info|int|jobs|mil|mobi|name|museum|name|net|org|pro|tel|travel)\b/;
    var validEmailAddress = emailPattern.test(email); 

    if (validEmailAddress == true && emailstatus != "Email Sent") {    


        var message = "<HTML><BODY>"
        + "<P>Dear " + recipient + ","
        + "<br /><br />"
        + "<P>The following request:"
        + "<br /><br />"
        + "<b>Type:  </b>" + type + "<br />" 
        + "<b>From:  </b>" + startdate + "<br />" 
        + "<b>To:  </b>" + enddate + "<br />" 
        + "<br /><br />" 
        + "<b>is </b>" + decision + "<br />"   
        + "<b>Comments </b>" + comments + "<br />"
        + "<br /><br />"    
        + "Diane"
        + "<br /><br />" 
        + "</HTML></BODY>";      
      MailApp.sendEmail(email, "Regarding your leave request", "", {htmlBody: message});   
   sheet.getRange(i + 2,10).setValue("Email Sent"); 
      // Make sure the cell is updated right away in case the script is interrupted
      SpreadsheetApp.flush();
    }
}
  }

嘗試這個:

通常,錯誤是您沒有逃避正則表達式中包含的正斜杠。 我很驚訝它完全運行了。 對我來說還可以。 您可能想看看Utilities.formatString()來構建您的消息。 只需單擊“幫助/ API參考”。 從那里開始,它在左下角顯示腳本服務/實用工具。

就個人而言,我不會像這樣循環沖洗。 我也將startRow和emailPattern移出了循環。 他們沒有改變。 您放入循環的次數越少,運行速度就越快。 我將MailApp.sendmail注釋掉了,因為我實際上並不希望發送電子郵件,並且我認為您沒錯。

function sendLeaveRequestDecisions() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Index Generation");
  var dataRange = sheet.getRange(2,1,sheet.getLastRow()-1,sheet.getLastColumn());
  var data = dataRange.getValues();
  var startRow = 2; //First row of data to process
  var emailPattern = /^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+(?:[A-Z]{2}|aero|asia|biz|com|coop|edu|gov|info|int|jobs|mil|mobi|name|museum|name|net|org|pro|tel|travel)\b/;
  for (var i=0;i<data.length;i++){
    var rowData = data [i];
    var startdate = rowData[2];
    var enddate = rowData[3];
    var type = rowData[4];
    var email = rowData[5];
    var recipient = rowData[1];
    var decision = rowData[7];
    var comments = rowData[8];
    var emailstatus = rowData[9];
    var validEmailAddress = emailPattern.test(email); 
    if (validEmailAddress == true && emailstatus != "Email Sent") {
      var message = "<HTML><BODY>" + "<P>Dear " + recipient + "," + "<br /><br />" + "<P>The following request:" + "<br /><br />" + "<b>Type:  </b>" + type + "<br />" + "<b>From:  </b>" + startdate + "<br />" + "<b>To:  </b>" + enddate + "<br />"  + "<br /><br />" + "<b>is </b>" + decision + "<br />"   + "<b>Comments </b>" + comments + "<br />"+ "<br /><br />" + "Diane"+ "<br /><br />" + "</HTML></BODY>";          
      //MailApp.sendEmail(email, "Regarding your leave request", "", {htmlBody: message});   
      sheet.getRange(i + 2,10).setValue("Email Sent"); 
    }
  }                                             
  //SpreadsheetApp.flush();                                             
}

我做過類似但完全不同的事情,而且我個人過去發現這種響應無濟於事,所以如果您有這種感覺,請告訴我不要管它。

如果您希望我嘗試寫一些您和其他人可以運行的東西,我會做的。 我這樣做的例子比您個人的更為個人。

暫無
暫無

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

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