3

我正在尝试完成我想象的在 Google Apps 中相当简单的自动化,但我是 Google 脚本的新手,并且无法弄清楚执行脚本的触发器是如何工作的。

这是一些伪代码,描述了我认为我需要做的事情:

//When a new group is created execute the function below

function addNewSalesTeamGroupMember() {
  //Get the new group's id/email address
  //Add it as a new member of the Sales Team group (id=SalesTeam@mydomain.com)
}

以下是手头任务的一些背景:

我有一个将网上论坛用作电子邮件转发器的 Google Apps 帐户。例如,有 50 个组,每个组有 1 名成员,用于为销售团队成员提供域上的电子邮件帐户(例如 salesguy@mydomain.com 是一个组,其唯一目的是转发到 Sales Guy 的第三方电子邮件地址: salesguy@yahoo.com)。还有另一个组 SalesTeam@mydomain.com,其中包含每个销售团队成员,因此经理可以立即向整个销售团队发布公告。

我的任务是编写一个脚本,该脚本将在创建时自动将创建的任何新销售成员添加到 SalesTeam 组。因此,它需要在添加新销售成员时运行(即,当创建一个新组时)。

我有更新 Groups 的 API,但是我找不到任何资源来描述如何编写触发器来告诉脚本在创建新组时执行,从而能够检索新组的地址。换句话说,我正在寻找学习如何在 Google Scripts 中编写这部分伪代码:

//When a new group is created execute the function below
4

1 回答 1

0

这是可行的,但你需要在这里做一些事情。由于谷歌应用程序脚本无法查看您是否创建了需要比较内容的组。首先执行此代码以获取所有组并将它们放入数据库中:

function startUp() {
  var groups = GroupsManager.getAllGroups();
  var db = ScriptDb.getMyDb();
  for (var a in groups){
    var ob = {group: groups[a].getId()};
    db.save(ob);
  }
}

所以现在我们有一个充满我们组的数据库,我们将创建一个函数来检查是否添加了新组:

function control() {
  var db = ScriptDb.getMyDb();
  var results = db.query({});
  var groups = GroupsManager.getAllGroups();


  while (results.hasNext()) {
    var result = results.next();
    var group = GroupsManager.getGroup(result.group);
    for (var a in groups){
      if (groups[a].getId() == group.getId()){
        //things stay the same remove it from the groups array
        groups.splice(a,1);
        break;
      }
    }
  }
  //whats left in the array should be a new group
  for (var a in groups){
    //save it first
    var ob = {group: groups[a].getId()};
    db.save(ob);
    //And now tell your script to add this email to the group you want
    GroupsManager.getGroup("SalesTeam@mydomain.com").addMember(groups[a].getId());
  }
}

现在转到您的脚本触发器并设置一个时间驱动触发器,以了解您希望执行此功能的频率。

亲切的问候,

托马斯·范拉图姆

于 2012-09-26T21:12:11.920 回答