【问题标题】:Auto Send Email when New Row Added into Google Sheets将新行添加到 Google 表格时自动发送电子邮件
【发布时间】:2020-08-15 09:42:43
【问题描述】:

我正在尝试设置一个脚本,以在每次将新行添加到我的 google 表格工作表中时发送电子邮件。该工作表当前已连接到我的 Google 表单。

但是,我无法保存此代码,因为错误显示为 SyntaxError: Invalid or unexpected token (line 11, file "Email.gs"

我已经尝试了好几次,但无法找出问题所在。 非常感谢您对这个脚本的帮助,谢谢。



function sendEmail() {

 //setup function

 var ActiveSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

 if (ActiveSheet.getName() == 'FORM' ) {

   var StartRow = 2;

   var RowRange = ActiveSheet.getLastRow() – StartRow + 1;

   var WholeRange = ActiveSheet.getRange(StartRow,1,RowRange,17);

   var AllValues = WholeRange.getValues();

   var message = "";

   //iterate loop

   for (i in AllValues) {

     //set current row

     var CurrentRow = AllValues[i];


       //set HTML template for information

       message +=


           "<p><b>Entered: </b>" + CurrentRow[1] + "</p>" +

             "<p><b>Timestamp: </b>" + CurrentRow[2] + "</p>" +

               "<p><b>Name: </b>" + CurrentRow[3] + "</p>" +

                 "<p><b>ID No.: </b>" + CurrentRow[4] + "</p>" +

                   "<p><b>Contact: </b>" + CurrentRow[5] + "</p>" +

                      "<p><b>Address: </b>" + CurrentRow[6] + "</p>" + 
                        
                        "<p><b>Temperature: </b>" + CurrentRow[7] + "</p>" +
                          
                           "<p><b>Check In Date: </b>" + CurrentRow[8] + "</p>" +
                             
                              "<p><b>Room Number: </b>" + CurrentRow[9] + "</p>" +
                                
                                 "<p><b>Bank Details: </b>" + CurrentRow[10] + "</p>" +
                                   
                                    "<p><b>Symptoms: </b>" + CurrentRow[11] + "</p>" +
                                      
                                       "<p><b>Contact: </b>" + CurrentRow[12] + "</p>" +
                                         
                                          "<p><b>Agree to SOP: </b>" + CurrentRow[13] + "</p>" +
                                            
                                             "<p><b>Declaration: </b>" + CurrentRow[14] + "</p>" +
                                               
                                                "<p><b>Full Name: </b>" + CurrentRow[15] + "</p>" +
                        
                        
                        "</p><br><br>";

 
     }

   }//For loop close

   //define who to send emails to

   var SendTo = "myemail@email.com";

   //set subject line

   var Subject = "New Form";

   //send the actual email   if message is not empty

   if (message) {

     MailApp.sendEmail({

       to: SendTo,

       subject: Subject,

       htmlBody: message,

     });

   }//if message

 }//if sheetName Review

}//End Func

【问题讨论】:

  • 使用单引号或双引号。或者如果您要使用模板字符串,请使用反引号。 不是有效的语法,您从哪里得到使用它们的想法?回复:message 连接 - hadouken!
  • 感谢您的回复。我刚刚更正了双引号错误,可能是由于我之前使用的文本编辑器造成的。运行后,在第 11 行仍然显示相同的错误。想知道上面的脚本还有什么问题?
  • 也许,改用 IDE(如 VS Code 或即将更新的 Web IDE)。它会拯救你。除了您在全局范围内声明了i(因为它缺少声明)之外,别无他法。第 11 行是什么?
  • 在此处复制和粘贴时,ActiveSheet.getLastRow() – StartRow + 1 包含一个 En Dash 字符(代码 8211),它不是有效的 JavaScript 运算符,您的意思是使用连字符(代码 45)。这很可能是通过使用 WYSIWYG 文本编辑器而不是纯文本编辑器插入的。正如 Oleg 建议的那样,这可以通过在在线脚本编辑器中输入(而不是复制/粘贴)或使用纯文本编辑器(如 VS Code、vi、nano 等)来解决。
  • 您是否在博客、论坛或类似地方找到了原始代码?您的代码的来源是什么(添加链接)?你用的是什么IDE?

标签: google-apps-script google-sheets syntax-error


【解决方案1】:

cmets 中提到的语法错误(使用大引号,而不是直引号,破折号而不是破折号/连字符)很可能是由于从网站上复制代码导致的,该网站显示的代码带有错误的字符,这可能是由网站模板或网络浏览器扩展引起的。

如果您使用的是 Google Apps 脚本编辑器,您应该学习如何使用它来调试您的代码,以便能够找到此语法错误。

另一个选项是使用另一个具有更好语法突出显示的 IDE。您甚至可以通过学习使用代码 lint 来超越这一点。

相关

【讨论】:

    猜你喜欢
    • 2016-09-15
    • 1970-01-01
    • 2014-09-14
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    相关资源
    最近更新 更多