Javascript Google Script maker用于格式化电子表格

Javascript Google Script maker用于格式化电子表格,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,这是我第一次发帖,如果我遗漏了任何重要的细节,请耐心等待 总之,总结一下这个问题:我一直在尝试让一个脚本在Google script maker上工作,以格式化一个连接到表单的电子表格,直接转到我的电子邮件 因此,基本上用户表单-->电子表格-->我的电子邮件 这些问题相当标准: 有什么问题吗 你在哪里 然而,我想用的一个问题是“这个问题的优先级是什么?”高还是低。我有多项选择的格式,所以它是一个简单的选择 我想要的Psuedocode: if (priority = low) put #pri

这是我第一次发帖,如果我遗漏了任何重要的细节,请耐心等待

总之,总结一下这个问题:我一直在尝试让一个脚本在Google script maker上工作,以格式化一个连接到表单的电子表格,直接转到我的电子邮件

因此,基本上用户表单-->电子表格-->我的电子邮件

这些问题相当标准:

  • 有什么问题吗
  • 你在哪里
  • 然而,我想用的一个问题是“这个问题的优先级是什么?”高还是低。我有多项选择的格式,所以它是一个简单的选择

    我想要的Psuedocode:

    if (priority = low) put #priority low onto the email
    
    很简单,但我似乎无法让它工作,以下是我的代码:

    function sendFormByEmail(e) 
    {    
        // Remember to replace XYZ with your own email address
        var email = "email"; 
    
        var subject = "Help Desk Form Submitted";  
    
        var s = SpreadsheetApp.getActiveSheet();
        var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];    
        var message = ""; 
        var priority = "";
    
        if(message.indexOf("What is the priority of this problem? =           Low")){
            priority += "#priority low";
        }
        else
            priority == "GFHHFFHAHFH ";
    
        for(var i in headers){
            message += headers[i] + ' =  \t \t'+ e.namedValues[headers[i]].toString() + "\n\n";  }
    
        if (message.indexOf("What is the priority of this problem? =           Low"))
            message += "This is a test";
        else
            message += "This is not a test";
    
        MailApp.sendEmail(email, subject, message); 
    }
    

    让我们看看
    if(message.indexOf()…
    的第一个实例。它有一些问题:

    • 前面几行,
      message
      被设置为空字符串…因此您在其中找不到“priority”字符串

    • if
      语句将
      indexOf()
      的返回视为布尔值。但是,当未找到项时,
      .indexOf()
      的返回代码为
      -1
      ,这是“true ish”。如果找到字符串并且位于搜索主题的开头,则返回值将为
      0
      ,即“false ish”。如果在任何其他位置找到它,则该值将为“>0”,也就是“true ish”

    • 的else
      中有一个输入错误。比较
      =
      应该是赋值
      =
      ,或者
      +=
      ,如果您愿意的话

    • 看看周围的代码,这段代码看起来像是以前版本的遗留代码,可以删除

    现在看第二个例子

    • 现在应该填充
      消息
      。但是,比较仍然使用了
      .indexOf()
      的错误布尔解释

    • 搜索字符串包含一批空格…但在响应中循环的前一个代码使用选项卡将“标题”与“值”分开,因此搜索将始终返回“-1”(将解释为
      true

    还有一些其他整理物品。您可能需要:

    function sendFormByEmail(e) 
    {    
      Logger.log(JSON.stringify(e));
      var email = Session.getEffectiveUser().getEmail();
      var subject = "Help Desk Form Submitted";  
      var message = ""; 
    
      var s = e.range.getSheet(); // Sheet that received form response
      var headers = s.getDataRange().getValues()[0];   
    
      for (var question in headers) {
        message += headers[question] + ' = \t\t' + e.values[question] + '\n\n';
      }
    
      // Add text relative to the priority of the reported issue.
      if (e.namedValues["What is the priority of this problem?"].toString() === "Low")
        message += "This is a test";
      else
        message += "This is not a test";
    
      Logger.log(message);
      MailApp.sendEmail(email, subject, message); 
    }
    

    PS:你可以看到为什么建议将表单问题保持简短,如“优先级”,并将解释性语句保留为帮助文本!

    好了!谢谢。使它起作用的部分是if(例如,namedValues[“此问题的优先级是什么?”)。toString()=“低”),这是if语句的条件出了问题。我遇到的问题是在写这篇文章的同时集成我学习JS,并将Google的东西放在那里。再次感谢!