IF函数 - 谷歌脚本(IF Function - Google Scripts)

2019-10-20 07:35发布

我努力让我的脚本运行一个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小时”作为有效的数据来查找。

  • 任何人都可以看到我做错了什么?

Answer 1:

你从细胞中获得的价值是不是你的想法,因为你正在使用getValues()用一个“s”,你可能知道,这个方法总是返回数组的数组,即使单个细胞被定义为范围。

你有2种选择:

  1. 使用getValue()来获得小区的字符串内容
  2. 使用getValues()[0][0]以获得这个阵列的第一(只)元件。

我建议第一个解决方案,因为我认为它通常是使用适当的方法是一个好主意... getValue()的单细胞和getValues()对多个小区的...我没有进一步的检查,但我敢肯定它将这种变化(适用于工作vResultsemailAddressesvLength )。

这也将是谨慎,以确保vResults是一个数字,因为你用它来定义范围...你可以使用Number(vResults)作为一种安全措施。



文章来源: IF Function - Google Scripts