Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何仅在谷歌窗体中发送填充值而不是空白值?_Javascript_Email_Triggers_Google Apps Script_Google Forms - Fatal编程技术网

Javascript 如何仅在谷歌窗体中发送填充值而不是空白值?

Javascript 如何仅在谷歌窗体中发送填充值而不是空白值?,javascript,email,triggers,google-apps-script,google-forms,Javascript,Email,Triggers,Google Apps Script,Google Forms,我制作了一个有很多字段的谷歌表单。我已经设置了一个触发器,将表单值发送到一个特定的位置(还将其保存在google drive的excel工作表中)。但它也给我邮寄了空白值,用户没有选择。我应该如何通过修改下面的代码只将填写的值发送到mail function Initialize() { var triggers = ScriptApp.getScriptTriggers(); for(var i in triggers) { ScriptApp.deleteTrigger(

我制作了一个有很多字段的谷歌表单。我已经设置了一个触发器,将表单值发送到一个特定的位置(还将其保存在google drive的excel工作表中)。但它也给我邮寄了空白值,用户没有选择。我应该如何通过修改下面的代码只将填写的值发送到mail

function Initialize() {

  var triggers = ScriptApp.getScriptTriggers();

  for(var i in triggers) {
    ScriptApp.deleteTrigger(triggers[i]);
  }

  ScriptApp.newTrigger("SendGoogleForm")
  .forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
  .onFormSubmit()
  .create();

}

function SendGoogleForm(e) 
{  
  try 
  {  
    var email ="abc@abc.com";

    var subject = "Form Submission";  

    var s = SpreadsheetApp.getActiveSheet();
    var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];    
    var message = "";    
    for(var i in headers) {

      message += headers[i] + ' :: '+ e.namedValues[headers[i]].toString() + "\n\n"; 
    }

    message += "Sheet URL :: " + SpreadsheetApp.getActiveSpreadsheet().getUrl() + "\n";

    MailApp.sendEmail(email, subject, message); 

  } catch (e) {
    Logger.log(e.toString());
  }

}

请帮我怎么做。谢谢:)

我找到了解决问题的方法。它只是在for循环中添加一个简单的if语句

解决方案:

for(var i in headers) 
{
      if( e.namedValues[headers[i]].toString() != "") //Add this line.
      {   
      message += headers[i] + ' :: '+ e.namedValues[headers[i]].toString() + "\n\n"; 
      }
    }

我找到了解决问题的方法。它只是在for循环中添加一个简单的if语句

解决方案:

for(var i in headers) 
{
      if( e.namedValues[headers[i]].toString() != "") //Add this line.
      {   
      message += headers[i] + ' :: '+ e.namedValues[headers[i]].toString() + "\n\n"; 
      }
    }

另一种方法是使用三元语句:

message += e.namedValues[headers[i]] != "" ? e.namedValues[headers[i]].toString() + "\n\n" : "";

我在GAS/Javascript脚本中使用它来防止在生成的电子邮件中发送无关数据。

另一种方法是使用三元语句:

message += e.namedValues[headers[i]] != "" ? e.namedValues[headers[i]].toString() + "\n\n" : "";
我在GAS/Javascript脚本中使用它来防止在生成的电子邮件中发送无关数据