我努力让我的脚本运行IF功能。基本上我想根据特定的单元格内容运行脚本。
我想基于此运行IF函数并编写以下代码:
function sendemail () {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = SpreadsheetApp.getActiveSheet();
var targetSheet = ss.getSheetByName("Response");
var vCodes = ss.getSheetByName("Codes")
var vResults = targetSheet.getRange("E2").getValues();
var emailAddresses = targetSheet.getRange("B2").getValues()
var dataRange = vCodes.getRange(1, 1, vResults, 1).getValues();
var subject = "Here are your Wi-Fi Codes!";
var vLength = vCodes.getRange("C2").getValues();
if (vLength == "24 hours"){
MailApp.sendEmail(emailAddresses, subject, dataRange);
targetSheet.deleteRows(2);
vCodes.deleteRows(1,vResults);
}
}
如果C2中的值是" 24小时"我希望发送电子邮件。在我运行脚本的那一刻,没有错误,但它没有发送任何电子邮件,因为IF功能显然没有正常运行。
如果我编辑代码说:
if (vLength == "")
然后电子邮件发送。它似乎无法识别" 24小时"作为有效的数据来查找。
答案 0 :(得分:1)
您从单元格中获得的价值并不是您的想法,因为您使用的是getValues()
与''你可能知道这个方法总是返回一个数组数组,即使单个单元被定义为范围。
您有两个选择:
getValue()
获取单元格的字符串内容getValues()[0][0]
获取此数组的第一个(也是唯一的)元素。我建议使用第一个解决方案,因为我认为使用适当的方法通常是个好主意... getValue()
用于单个单元格,getValues()
用于多个单元格...
我没有进一步检查,但我确信它可以用于此更改(适用于vResults
,emailAddresses
和vLength
)。
由于您使用vResults
来定义范围,因此也要小心确保Number(vResults)
是一个数字...您可以使用{{1}}作为安全措施。