Google Apps - 在Org中共享联系人

时间:2015-07-24 19:34:46

标签: google-apps google-contacts google-shared-contacts

在我们的Google Apps Org中,我想设置一个共享联系人列表,我们公司内的任何人都可以访问并添加/编辑联系人,以便我们拥有所有相同的信息。最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

我会在App Engine中创建一个使用Google API编辑共享联系人列表的应用程序。这样,您可以限制对域用户的访问,并审核正在发生的活动。有第三方工具可以编辑共享联系人列表,但通常会将其锁定以避免用户删除他们无法访问的联系人的情况。不要忘记Gmail预先输入中显示的共享联系人列表有24小时的延迟。

答案 1 :(得分:0)

嗨,对于那里的任何人,我们都使用了Google表格,现在任何人都可以更新表单,您可以设置自动触发器按计划上传它们,也可以手动将它们推送到Google目录中。

<强> gsheet: enter image description here

首先,我们从目录中提取所有联系人,然后您可以添加/更新/删除现有或新的联系人。

然后使用菜单将它们推送到目录。

我们使设置非常简单,因此它可以自动抓取用户信息和域等,而无需用户做任何事情

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