Google Script制作者可以格式化电子表格

时间:2013-07-31 14:41:47

标签: javascript google-apps-script google-sheets

这是我第一次发帖,如果我留下任何关键细节,请耐心等待。

无论如何,要总结一下这个问题:我一直试图让一个脚本在Google Script制作者上工作,以格式化连接到表单的电子表格,直接进入我的电子邮件。

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

问题很标准:

  1. 有什么问题?
  2. 你在哪里
  3. 但是,我想要使用的一个问题是“这个问题的优先级是什么?”高或低。我有多种选择格式,所以它是一个简单的选择。

    我想要的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); 
    }
    

1 个答案:

答案 0 :(得分:0)

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

  • 前面几行,message被设置为空字符串...所以你不会在其中找到“优先级”字符串。

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

  • else中,有一个错字。如果您愿意,则比较==应为作业=+=

  • 查看周围的代码,这件作品看起来就像以前的版本一样,可以删除。

现在看第二个实例。

  • 现在应填充message。但是,比较仍然使用.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:你可以看出为什么保持形式问题简短,比如“优先级”,并将解释性句子保留为帮助文本!