【发布时间】:2019-08-02 23:14:58
【问题描述】:
我在这里使用了教程:https://developers.google.com/apps-script/articles/sending_emails
我遇到的问题是它多次发送通知(17、25、30 次)。我也尝试了“改进”版本,如果“Email_sent”列不存在,它应该只发送电子邮件t 填充。该脚本填充了“email_sent”,但这并没有阻止它发送很多次,即使使用“if”是不可能的。
我不知道我可能做错了什么导致它发送了这么多次。
我不得不稍微修改代码,因为当我使用var row = data[i] 和var emailAddress = row[0] 时,它无法检索电子邮件地址。
如果我取出[i] 并只使用var row = data,那么它可以工作。我不知道这导致了什么差异,或者它是否与我遇到的问题有关。
我还将numrow 更改为sheet.getlastrow(),而不是静态数字,因为我的数据中的行数可能会发生变化。
这是我的代码,按照教程中的 i 编写
function sendEmails() {var sheet = SpreadsheetApp.getActiveSheet();var numRows = sheet.getLastRow()
var dataRange = sheet.getRange(3, 2, numRows);
var data = dataRange.getValues();for (i in data) {var row = data[i];var emailAddress = row[0];var message = 'You have unreleased time in LETS. Please review and release.';var subject = 'Please review LETS time';MailApp.sendEmail(emailAddress, subject, message);
}
}
这种方式发送失败,说找不到收件人,调试器显示 emailAddress 行返回空白。如果我删除它运行的 [i],但每次运行它都会收到大量电子邮件,并且每个电子邮件地址应该只发送一封。
【问题讨论】:
-
我认为提供您当前的脚本来复制您的问题将帮助用户思考解决方案。当然,请删除您的个人信息。
-
[i]部分var row = data[i];指的是元素在数据中的位置。变量i是第二个示例中的计数器,从零开始。数据在一个数组中。数组中有元素。每个元素都在某个位置。第一个数据元素位于零位置。数据位于二维数组中,该数组是具有内部数组的数组。内部数组是电子表格中的每一行。您可以尝试使用调试器并单步执行代码以逐行查看它在做什么。您可以单独运行每一行。请参阅帮助 - 文档 - 疑难解答 -
我已经运行了调试器。当我使用 data[i] 时,它无法发送,因为它找不到收件人,并且调试部分中具有 emailAddress 变量的行变为空白。我打算附上调试部分的图像,但我想我不能?
标签: google-apps-script google-sheets