2013-06-22 121 views
0

我想弄清楚我的Google Apps脚本出了什么问题。当第2列中的任何单元格不再具有“ - ”而下一个单元格为“否”时,我试图发送电子邮件。显然,sendEmail函数由于某种原因不起作用。为什么sendEmail功能不起作用?

我举了一个小电子表格的例子。我想在第三行匹配时发送电子邮件。

1 2 3 
1 00 - Yes 
2 00 - No 
3 00 x No 

这里是我的代码:

function onEdit() { 
    var s = SpreadsheetApp.getActiveSheet(); 
    if(s.getName() == "Sheet4") { //checks that we're on the correct sheet 
     var r = s.getActiveCell(); 
     var nextCell = r.offset(0, 1); 
     if((r.getColumn() == 2) && (r.getValue() !== '-') && (nextCell.getValue() === 'No')){ //checks the cell 
      MailApp.sendEmail('[email protected]', 'test email from Google Spreadsheet', 'Let me know if this came through ok');  
     } 
    } 
    } 
+0

您的脚本确实有效 - 当您在第2列中编辑一个值以使其不是“-''时,它会发送一封电子邮件。任何其他列中的编辑都不会执行任何操作。你能更清楚你期望脚本做什么吗? – Mogsdad

+0

它适合你吗?当我用我的电子邮件地址替换[email protected]时,我在第2列中编辑了除' - '以外的值,并且不会发送电子邮件。你确定你测试过吗? – Darthvazor

+0

我们一直关注这个脚本的错误部分 - 问题不在于您发送邮件的逻辑;问题在于您正在使用简单触发器无法提供的服务。 (当我测试时,我用日志替换了'MailApp.sendEmail',只是为了测试逻辑是否正常工作。) – Mogsdad

回答

1

onEdit()函数是简单触发函数的一个例子。如Understanding Triggers所述,简单触发器无法访问需要身份验证的服务。这就是MailApp和GmailApp不可用于发送邮件的原因。

+0

噢,好的。感谢您发布信息。我很感激。因此对于这个脚本,我们该如何解决它,因为OnEdit函数对MailApp没有用处?我不熟悉GAS,你能帮我弄清楚吗? – Darthvazor

1

首先,要检查不平等是!=的条件。因此请尝试下面的修改代码。 其次,你正在发送电子邮件到[email protected]。我假设实际的代码将电子邮件发送到一个真实的地址。

function onEdit() { 
    var s = SpreadsheetApp.getActiveSheet(); 
    if(s.getName() == "Sheet4") { //checks that we're on the correct sheet 
     var r = s.getActiveCell(); 
     var nextCell = r.offset(0, 1); 
     if((r.getColumn() == 2) && (r.getValue() != '-') && (nextCell.getValue() == 'No')){ //checks the cell 
      MailApp.sendEmail('[email protected]', 'test email from Google Spreadsheet', 'Let me know if this came through ok');  
     } 
    } 
    } 
+0

事实上,'!=='是一个有效的比较运算符,“严格不等于”,它比较值和类型。例如,'5!='5''将评估错误(它们具有相同的值),但'5!=='5''会评估为真(相同的值,但不同的类型)。 – Mogsdad

+0

Mogsdad是正确的。一切都按预期工作,但命令“MailApp.sendEmail('[email protected]','从Google Spreadsheet测试邮件','让我知道这是否通过确定');”由于某种原因似乎不执行。 – Darthvazor

相关问题