我正在尝试完成我认为在Google Apps中相当简单的自动化,但我是Google Scripts的新手,并且无法弄清楚执行脚本的触发器是如何工作的。
以下是一些伪代码,描述了我认为我需要做的事情:
//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组中。因此,当添加新的销售成员时(即,当制作新的组时),它需要运行。
我有API for updating Groups,但我找不到任何资源来描述如何编写触发器以告诉脚本在创建新组时执行,从而能够检索新的小组的地址。换句话说,我正在学习如何在Google Scripts中编写这部分伪代码:
//When a new group is created execute the function below
答案 0 :(得分: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());
}
}
现在转到脚本触发器并设置一个时间驱动的触发器,指示您希望执行此功能的频率。
亲切的问候,
Thomas van Latum