В рамках нашей организации Google Apps я хотел бы создать общий список контактов, к которому любой сотрудник нашей компании может получить доступ и добавлять / редактировать контакты, чтобы у нас была одинаковая информация. Как лучше всего это сделать?
Google Apps - общий доступ к контактам внутри организации
Ответы (2)
Я бы создал приложение в App Engine, которое использует API Google для редактирования списка общих контактов. Таким образом вы можете ограничить доступ для пользователей вашего домена, а также контролировать происходящие действия. Существуют сторонние инструменты, которые могут редактировать общий список контактов, но обычно они заблокированы, чтобы избежать ситуаций, когда пользователи удаляют контакты, которые у них не должно быть. Не забывайте, что список общих контактов, который отображается в Gmail с опережающим вводом, имеет задержку в 24 часа.
Привет всем, мы использовали Google Sheet, теперь любой может обновить лист, и вы можете либо установить автоматический триггер, чтобы загружать их по расписанию, либо вручную помещать их в каталог Google.
Сначала мы извлекаем все контакты из каталога, затем вы можете добавлять / обновлять / удалять существующие или новые контакты.
Затем переместите их в Каталог с помощью меню.
Мы сделали настройку очень простой, поэтому он автоматически захватывает информацию о пользователе, домен и т. Д., Без необходимости что-либо делать пользователю.
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 контактов за один запуск. Кроме того, некоторые контакты не синхронизируются и имеют ошибку, над которой мы скоро поработаем, чтобы получить дополнительную информацию для пользователя и даже сохранить пропущенный контакт, который будет исправлен и обновлен позже. В любом случае надеюсь, что это поможет и даст вам несколько идей.
Наш сайт находится здесь для всех, кого это интересует.