Google Apps 組織内で、社内の誰もがアクセスして連絡先を追加/編集できる共有の連絡先リストを設定して、すべて同じ情報を共有したいと考えています。これについて最善の方法は何ですか?
2 に答える
Google API を使用して共有連絡先リストを編集するアプリケーションを App Engine で作成します。これにより、ドメイン ユーザーへのアクセスを制限し、発生しているアクティビティを監査することもできます。共有の連絡先リストを編集できるサードパーティ製のツールがありますが、これは通常、ユーザーが削除できないはずの連絡先を削除する状況を避けるためにロックされています。Gmail の先行入力に表示される共有連絡先リストには 24 時間の遅延があることを忘れないでください。
誰でも 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;
}
}
これは非常にクールです。1 回の実行で約 700 の連絡先を処理すると停止または停止するように見えるため、現在、一括データ入力に取り組んでいます。また、一部の連絡先は同期されず、エラーが発生しています。これについては、ユーザーに詳細情報を提供し、欠落した連絡先を保存して後で修正および更新できるようにするためにまもなく作業を行います。とにかく、それが助けになり、あなたにいくつかのアイデアを与えることを願っています.
私たちのものは、興味のある人のためにここにあります.