在我们的Google Apps Org中,我想设置一个共享联系人列表,我们公司内的任何人都可以访问并添加/编辑联系人,以便我们拥有所有相同的信息。最好的方法是什么?
答案 0 :(得分:1)
我会在App Engine中创建一个使用Google API编辑共享联系人列表的应用程序。这样,您可以限制对域用户的访问,并审核正在发生的活动。有第三方工具可以编辑共享联系人列表,但通常会将其锁定以避免用户删除他们无法访问的联系人的情况。不要忘记Gmail预先输入中显示的共享联系人列表有24小时的延迟。
答案 1 :(得分:0)
嗨,对于那里的任何人,我们都使用了Google表格,现在任何人都可以更新表单,您可以设置自动触发器按计划上传它们,也可以手动将它们推送到Google目录中。
首先,我们从目录中提取所有联系人,然后您可以添加/更新/删除现有或新的联系人。
然后使用菜单将它们推送到目录。
我们使设置非常简单,因此它可以自动抓取用户信息和域等,而无需用户做任何事情
var SHEET_NAME = 'google';
var ERROR_RECIPIENT_MAIL= Session.getActiveUser().getEmail();
var DOMAIN = ERROR_RECIPIENT_MAIL.replace(/.*@/, "");
然后我们调用Domain Shared Contacts API来获取所有数据并将其放入数组中:
function getAllContacts(){
var contacts = ContactsApp.getContacts();
var lastRow = SpreadsheetApp.getActiveSpreadsheet().
getSheetByName(SHEET_NAME).getLastRow();
if (lastRow >2) SpreadsheetApp.getActiveSpreadsheet().
getSheetByName(SHEET_NAME).deleteRows(3, lastRow*1-2);
var contacts = ContactsApp.getContacts();
var params = {
method : "get",
contentType : "application/atom+xml",
headers : {"Authorization": "Bearer " +
ScriptApp.getOAuthToken(),"GData-Version": "3.0"},
muteHttpExceptions : true
};
var startIndex=1;
var data,respCode,resp;
resp = UrlFetchApp.fetch("//www.google.com/m8/feeds/contacts/"
+DOMAIN+"/full?alt=json&start-index="+startIndex, params);
respCode=resp.getResponseCode();
//SpreadsheetApp.getActiveSpreadsheet().
// getSheetByName(SHEET_NAME).getRange("A10").setValue(resp);
data = JSON.parse(resp.getContentText());
然后将其放在工作表上的正确字段中以供用户更新。然后,用户从下拉列表中选择操作,该脚本在运行脚本以进行更新时调用相应的函数。
删除功能示例:
function deleteContact(contactID,rowNumber){
var params = {
method : "delete",
contentType : "application/json",
headers : {"Authorization": "Bearer " + ScriptApp.getOAuthToken(),"GData-Version": "3.0","If-Match":"*"}
};
var resp = UrlFetchApp.fetch(contactID, params);
var respCode=resp.getResponseCode();
if (respCode=='201' || respCode=='200') {
SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME).deleteRow(rowNumber*1);
}
else{
SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME).getRange(rowNumber*1, 15, 1, 1).setValue('ERROR');
ERROR_COUNT=ERROR_COUNT.toString()+rowNumber;
}
}
非常酷,现在我们正在处理批量数据输入,因为它似乎在一次运行中大约700个联系人后停止或停止。此外,一些联系人不会同步并出现错误,我们会很快处理这些错误,以便为用户提供更多信息,甚至可以将错过的联系人存储在以后修复和更新。无论如何希望有所帮助并给你一些想法。
我们找到感兴趣的人here。