【问题标题】:GoogleScript - Email non blank values from Google sheet - OnFormSubmitGoogleScript - 从 Google 工作表通过电子邮件发送非空白值 - OnFormSubmit
【发布时间】:2021-04-06 10:56:45
【问题描述】:

我有一张大约有 50 列的工作表,我正在尝试将 HTML 格式的非空白字段通过电子邮件发送给用户;但只有 NON-Blank 字段,这是我的代码,它返回 Null 和 Non-Null 字段,另外我需要它仅通过电子邮件发送最后一次提交的表单,而不是全部:

      function onFormSubmit(e) {
      var ss = e.source;
      var sheet = ss.getActiveSheet();          
      var range = e.range.getA1Notation();
      var column = e.range.getColumn();
      var row = e.range.getRow();
      var values = e.namedValues;
      var htmlBody = '<ul>';
      for (Key in values) {
        var label = Key;
        var data = values[Key];
        htmlBody += '<li>' + label + ": " + data + '</li>';
       };
       htmlBody += '</ul>'
     var Submitter = 3;
     var Submitteremail = sheet.getRange(row,Submitter).getValue();

  MailApp.sendEmail({
         to: "Jason@xxxx.com", 
         replyTo: Submitteremail, 
         subject, 
         htmlBody : htmlBody});
 Logger.log("checkpoint5");
 }

【问题讨论】:

    标签: function google-apps-script null macos-mail-app


    【解决方案1】:

    这是我在您最初帮助后附加的代码:

    function onFormSubmit(e) {
    const sh=e.range.getSheet();          
    var htmlBody='<ol>';
    var Url = "https://docs.google.com/xxx";
    var Text = "CMF Form Submission Sheet";
    for(key in e.namedValues) {
      if(e.namedValues[key][0].length>0) {
        htmlBody += '<li>' + key + ": " + e.namedValues[key][0] + '</li>';
     }
    }
    htmlBody += '<p>' + '\n' + '\n' + "<a href=\""+ Url + "\">" + Text + "</a>" + 
    '\n' + '\n' + '\n' + '<p>' + '</ol>' ;
    var Submitteremail = e.values[1];
    var Type = e.values[6];
    var CMFNumber = e.values[0];
    var Sub = "A new CMF has been submitted for a " + Type;
    MailApp.sendEmail({to:"Jason.@xxx.com",subject: Sub, replyTo:Submitteremail, 
    htmlBody:htmlBody});
    Logger.log(html);
    }
    

    【讨论】:

    • 这太棒了!我最终改变了一些事情;但是如何在通过电子邮件发送时保持列标题从左到右的顺序?
    • 不删除空格并使用普通的 for 循环或带有标头数组的 forEach 怎么样。 const headerArray=sh.getRange(1,1,1,sh.getLastColumn()).getValues().flat(); 然后是 e.values.forEach((v,i)=>{html+='
    • ' + headerArray[i] + ':' + v + '
    • ';});`
  • 那是一些复杂的代码!我真的不知道在哪里使用该代码或用它替换什么
  • 这只是一个循环,它按照它们在表单中的顺序打印它们
  • 那我会在我的代码中哪里使用它呢?在 IF 语句之上?还是代替它?
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签