当前位置: 首页 > 知识库问答 >
问题:

从Google App脚本发送电子邮件时出错

凤经武
2023-03-14

我正在尝试发送电子邮件给用户表单后提交表单。但我有一个错误:

这是我的.html代码:

<script>    
function handleFormSubmit(formObject) {
        google.script.run.processForm2(formObject);
        document.getElementById("myForm").reset();
        alert("Your form is submitted. Thank you!");
      }
</script>
function processForm2(formObject) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ws = ss.getSheetByName("Sheet1");
  var tz = ss.getSpreadsheetTimeZone();
  var d = Utilities.formatDate(new Date(), tz, 'dd/MM/yyyy @ HH:mm:ss');
  var code = Math.floor(Math.random() * 99999) + 10000;

  ws.appendRow([code, d, null, null, formObject.name, formObject.email, 
                  formObject.things]);
  emailCode2(code);
 }

function emailCode2(code){
  var url = "https://docs.google.com/spreadsheets/d/11X8e10TGQwzUQVJzTJ24JB1KMCTzkL5F5vObKrH0__k/edit#gid=0";
  var ss = SpreadsheetApp.openByUrl(url);
  var lastRow = ss.getLastRow();
  var sheet= ss.getSheetByName("Sheet1");
  
  var name = sheet.getRange(lastRow,5).getValue();
  var emailAddress = sheet.getRange(lastRow,8).getValue();
  var subject = 'Code';

  var message = 'Dear ' + name + ',\n\nHere is your code: ' + code;
  MailApp.sendEmail(emailAddress, subject, message);
}

共有1个答案

龙承颜
2023-03-14

>

  • 我认为该错误意味着Google Apps脚本端出现了错误。

      var ss = SpreadsheetApp.openByUrl(url);
      var lastRow = ss.getLastRow();
      var sheet= ss.getSheetByName("Sheet1");
    

    在本例中,lastrow是电子表格的第一个选项卡。如果sheet1不是第一个选项卡,则最后一行可能不同。请小心这个。所以请修改如下。

      var ss = SpreadsheetApp.openByUrl(url);
      var sheet= ss.getSheetByName("Sheet1");  // Modified
      var lastRow = sheet.getLastRow();  // Modified
    
    function processForm2(formObject) {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var ws = ss.getSheetByName("Sheet1");
      var tz = ss.getSpreadsheetTimeZone();
      var d = Utilities.formatDate(new Date(), tz, 'dd/MM/yyyy @ HH:mm:ss');
      var code = Math.floor(Math.random() * 99999) + 10000;
    
      ws.appendRow([code, d, null, null, formObject.name, formObject.email, formObject.things]);
      emailCode2(code);
    }
    
    function emailCode2(code){
      var url = "https://docs.google.com/spreadsheets/d/11X8e10TGQwzUQVJzTJ24JB1KMCTzkL5F5vObKrH0__k/edit#gid=0";
      var ss = SpreadsheetApp.openByUrl(url);
      var sheet= ss.getSheetByName("Sheet1");  // Modified
      var lastRow = sheet.getLastRow();  // Modified
      
      var name = sheet.getRange(lastRow,5).getValue();
      var emailAddress = sheet.getRange(lastRow,6).getValue();  // Modified
      var subject = 'Code';
    
      var message = 'Dear ' + name + ',\n\nHere is your code: ' + code;
      MailApp.sendEmail(emailAddress, subject, message);
    }
    
    function processForm2(formObject) {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var ws = ss.getSheetByName("Sheet1");
      var tz = ss.getSpreadsheetTimeZone();
      var d = Utilities.formatDate(new Date(), tz, 'dd/MM/yyyy @ HH:mm:ss');
      var code = Math.floor(Math.random() * 99999) + 10000;
    
      ws.appendRow([code, d, null, null, formObject.name, formObject.email, formObject.things]);
      emailCode2(code);
    }
    
    function emailCode2(code){
      var url = "https://docs.google.com/spreadsheets/d/11X8e10TGQwzUQVJzTJ24JB1KMCTzkL5F5vObKrH0__k/edit#gid=0";
      var ss = SpreadsheetApp.openByUrl(url);
      var sheet= ss.getSheetByName("Sheet1");  // Modified
      var lastRow = sheet.getLastRow();  // Modified
      
      var name = sheet.getRange(lastRow,5).getValue();
      var emailAddress = sheet.getRange(lastRow,8).getValue();
      var subject = 'Code';
    
      var message = 'Dear ' + name + ',\n\nHere is your code: ' + code;
      MailApp.sendEmail(emailAddress, subject, message);
    }
    
    • 在此修改中,它假设processForm2(formObject)formObject具有正确的值。如果有错误的值,则可能发生错误。请小心这个。
    • GetLastRow()

  •  类似资料:
    • 我正在使用Google表单将多条消息合并到一个每日电子邮件中,使用脚本和每日定时触发器发送(代码从这里复制,下面是我的版本)。 例如,一个电子邮件地址是abc@example.co.uk,他们收到了电子邮件,但在我的收件箱(xyz@example.co.uk)中是发送到abc@example.co.uk的电子邮件,但不是转发的消息或回复。 有什么办法阻止这一切吗?

    • 我有以下代码: 我无法连接到gmail,连接出现错误,但是所有连接信息都是正确的,不知道是什么阻止了我发送电子邮件的代码中的连接,我无法发送简单的电子邮件,我一点也不知道它是什么。 感谢您的帮助

    • 问题内容: 我在linux机器上,我监视进程使用情况。大多数时候,我将离开系统,并且可以在设备上访问Internet。因此,我计划编写一个shell脚本,该脚本可以向我发送该过程的输出。 可能吗? 如果是的话,如何制作一个shell脚本给我发邮件? 请提供摘要以开始使用。 问题答案: 是的,它可以正常工作,并且通常用于:

    • 问题内容: 我正在Windows上使用WampServer来测试站点。我有一个注册系统,用户会收到一封确认电子邮件。 是否可以从本地主机发送电子邮件? 问题答案: 如果要直接从本地主机发送电子邮件,则需要安装邮件传输代理(MTA),或者安装SMTP服务。 IIS提供了一个。否则,您可以在Google上找到其他人。 您也可以更改 邮件设置。这将不使用每条说来发送电子邮件,而是用于允许您从PHP脚本发

    • 事先谢谢,非常感谢。 向你问好,路易斯