【问题标题】:Google Apps script: Trigger does not work for e-mails to be sent outGoogle Apps 脚本:触发器不能用于发送电子邮件
【发布时间】:2017-03-10 18:13:43
【问题描述】:

我正在编写一个代码,旨在通过电子邮件通知我网站上的值是否发生变化。为此,我使用了 4 个函数:

  • 函数 1 执行函数 2-4
  • 函数 2 是一个刮刀
  • 函数 3 将数据写入电子表格的新行中
  • 函数 4 比较新写入的行,如果新行与之前不同,则发送一封电子邮件。

功能一每 5 分钟自动触发一次。电子表格显示触发器适用于功能二和三(抓取并将数据保存到电子表格),电子表格每五分钟更新一次。但是,当事情发生变化时,我不会收到电子邮件。

当我手动执行功能一时,它可以工作,包括在数据更改时发送电子邮件。我试图添加一个额外的触发器来执行比较数据并发送电子邮件的功能。然而,这也没有导致电子邮件被发送给我。

如果重要:数据大约每小时更改一次。但是,我想尽快得到通知,因此经常检查

你有什么想法,为什么发送电子邮件的触发器不起作用,你有什么解决办法吗?

提前致谢!

  function scrape_save_send(){
  getData();
  saveData();
  SendEmail();
}

function getData() { // works just fine, code cut to make it not too long
[...]
}

function saveData() {         // works fine both automatically and manually
 var sheet = SpreadsheetApp.getActiveSheet(); 
 sheet.appendRow([new Date(), getData()]);
 var lrow = sheet.getLastRow();
 sheet.getRange(lrow,3).setFormula('=SPLIT(B'+lrow+'; "abcdefghijklmnopqrstuvwxyz=<>- /")')       // workaround to extract a number from the scraped content
}

function SendEmail() {                         // works just fine if executed manually
  Utilities.sleep(2000)                        // delays the check
  var sheet = SpreadsheetApp.getActiveSheet();
  var lastRow = sheet.getLastRow(); 
  var ui = SpreadsheetApp.getUi();
  if (sheet.getRange(sheet.getLastRow()-1,2).getValue() === sheet.getRange(sheet.getLastRow(),2).getValue()) {
    Logger.log('equal');
  } else {
   var invest = sheet.getRange(sheet.getLastRow(),8).getValue();
    MailApp.sendEmail("ab@gmail.com", invest + "blablabla", "blablabla");
   // Logger.log('not equal');
  }
  }

【问题讨论】:

  • 我找到了解决方案:getUi() 函数显然导致了问题。因为我不需要它(它是旧函数遗留下来的),所以我删除了它,脚本现在可以自动运行。还是谢谢!

标签: email google-apps-script triggers


【解决方案1】:

尝试在SendEmail() 函数的最后一行将MailApp 更改为GmailApp

【讨论】:

  • 尝试在 sendData 和 SendEmail() 之间放置一个 flush()。
  • OP 使用了错误的类。它实际上是 GmailApp 而不是 MailApp。
  • 如果是这样的话,我认为该功能也不应该手动工作。
【解决方案2】:

我找到了解决方案:getUi() 函数显然导致了问题。一些研究表明,getUi() 函数仅在打开相应的工作表时才有效。

由于我不需要该函数(它是旧函数遗留下来的),因此我将其删除,该脚本现在可以自动运行。谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 2014-08-05
    • 2013-08-15
    • 1970-01-01
    • 2020-12-15
    • 2020-05-10
    相关资源
    最近更新 更多