Google Apps - общий доступ к контактам внутри организации

В рамках нашей организации Google Apps я хотел бы создать общий список контактов, к которому любой сотрудник нашей компании может получить доступ и добавлять / редактировать контакты, чтобы у нас была одинаковая информация. Как лучше всего это сделать?


person Brad Wickwire    schedule 24.07.2015    source источник


Ответы (2)


Я бы создал приложение в App Engine, которое использует API Google для редактирования списка общих контактов. Таким образом вы можете ограничить доступ для пользователей вашего домена, а также контролировать происходящие действия. Существуют сторонние инструменты, которые могут редактировать общий список контактов, но обычно они заблокированы, чтобы избежать ситуаций, когда пользователи удаляют контакты, которые у них не должно быть. Не забывайте, что список общих контактов, который отображается в Gmail с опережающим вводом, имеет задержку в 24 часа.

person Terry Chambers - Onix    schedule 24.07.2015

Привет всем, мы использовали Google Sheet, теперь любой может обновить лист, и вы можете либо установить автоматический триггер, чтобы загружать их по расписанию, либо вручную помещать их в каталог Google.

gsheet:  введите описание изображения здесь

Сначала мы извлекаем все контакты из каталога, затем вы можете добавлять / обновлять / удалять существующие или новые контакты.

Затем переместите их в Каталог с помощью меню.

Мы сделали настройку очень простой, поэтому он автоматически захватывает информацию о пользователе, домен и т. Д., Без необходимости что-либо делать пользователю.

var SHEET_NAME = 'google';
var ERROR_RECIPIENT_MAIL= Session.getActiveUser().getEmail();
var DOMAIN = ERROR_RECIPIENT_MAIL.replace(/.*@/, "");

Затем мы вызываем 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 контактов за один запуск. Кроме того, некоторые контакты не синхронизируются и имеют ошибку, над которой мы скоро поработаем, чтобы получить дополнительную информацию для пользователя и даже сохранить пропущенный контакт, который будет исправлен и обновлен позже. В любом случае надеюсь, что это поможет и даст вам несколько идей.

Наш сайт находится здесь для всех, кого это интересует.

person Chief Monkey    schedule 23.06.2016