javascript - 如何获取字符串并将其用作应用程序脚本中语法的一部分?
问题描述
我正在尝试为我们公司的所有用户建立一个 Gmail 数据库,我想通过一段代码获取这些 Gmail 并对它们应用 if 条件以查看它们是否匹配,但到目前为止我还没有成功。我不知道是因为我检索到的字符串不能被读取为应用程序脚本语法,还是因为我做错了。这是我的代码:
我将所有需要的 Gmail 放在 1 个单元格 (B3) 中,就像这样 ---> (user == 'abc1@gmail.com') || (用户 == 'abc2@gmail.com')
//my code
var user = Session.getEffectiveUser();
var mailDB = SpreadsheetApp.openById('Sheet ID').getSheetByName('Sheet Name'); //mails database
var cellcondition = HeadOfficeMailDB.getRange("A3"); // cell with certain value 22
var Gmails = mailDB.getRange("B3").getValue(); //retrieve Gmails in the cell as one whole string
if((Gmails) && (cellcondition == 22))
{
var newcell = HeadOfficeMailDB.getRange("C3").setValue(4);
}
我使用 2 个不同的 Gmail 设置数据库,但是当我使用数据库中未包含的第三个 Gmail 运行代码时,它仍然运行。似乎它无法将字符串识别为语法,还是我做错了什么?
如果您有任何解决方案或建议或其他更好的想法来处理此类问题,请不要犹豫,立即为我提供帮助。
解决方案
以下行
var cellcondition = HeadOfficeMailDB.getRange("A3");
将 Class Range 对象分配给 cellcondition。将其替换为
var cellcondition = HeadOfficeMailDB.getRange("A3").getValue();
将值分配A3
给cellcondition
。
要评估Sheet Name!B3
( ) 的值,(user == 'abc1@gmail.com') || (user == 'abc2@gmail.com')
您可以使用eval(),但这样做会带来巨大的安全风险。最好将电子邮件地址存储为列表(使用逗号等分隔符分隔),然后使用String.prototype.split()
和Array.prototype.index()
/或创建Set对象。
有关的
推荐阅读
- amazon-web-services - AWS Cloudwatch 将日志记录到 Azure Log Analytics
- google-sheets - 广泛特定单元格的总和
- c - 使用 (char **) 与 (const * char *) 与 (const char **)
- java - 如何在 Windows 上设置 JUNIT 以使用 Sublime 和命令行?
- reactjs - Reactjs:使用类与功能组件的最佳实践是什么?
- node.js - 在 puppeteer 中使用 browser.close() 与简单地终止整个程序有何不同?
- r - R data.frame 将字符转换为数字时的奇怪行为
- database - Cassandra 数据建模:选择分区键和复合键
- python - 我不明白为什么这不会打印,它说标题没有在第 5 行定义,即使我在括号中定义了它
- python-3.x - 使用 tkinter 将 Python 2.7 转换为 Python 3