首页 > 解决方案 > 如何获取字符串并将其用作应用程序脚本中语法的一部分?

问题描述

我正在尝试为我们公司的所有用户建立一个 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 运行代码时,它仍然运行。似乎它无法将字符串识别为语法,还是我做错了什么?

如果您有任何解决方案或建议或其他更好的想法来处理此类问题,请不要犹豫,立即为我提供帮助。

标签: javascriptstringgoogle-apps-scriptgoogle-sheetsevaluate

解决方案


以下行

var cellcondition  = HeadOfficeMailDB.getRange("A3");

将 Class Range 对象分配给 cellcondition。将其替换为

var cellcondition  = HeadOfficeMailDB.getRange("A3").getValue();

将值分配A3cellcondition

评估Sheet Name!B3( ) 的值,(user == 'abc1@gmail.com') || (user == 'abc2@gmail.com')您可以使用eval(),但这样做会带来巨大的安全风险。最好将电子邮件地址存储为列表(使用逗号等分隔符分隔),然后使用String.prototype.split()Array.prototype.index()/或创建Set对象。

有关的


推荐阅读