2013-11-25 5 views
1

Я ищу способ найти непрочитанное количество сообщений делегированных почтовых ящиков из любого из API Google.Получить непрочитанное количество сообщений от делегированного maibox

Я не уверен, что это возможно, но это поможет мне разработать инструмент помощи для компании, использующей это для более 1000 пользователей. Много делегаций продолжается, и я очень хочу найти способ добиться этого.

Но мне может понадобиться помощь, возможно, от людей ближе со знанием возможностей SDK администратора от Google.

Я хочу использовать Google Apps Script для сбора непрочитанного сообщения.

ответ

0

Я получил ответ от ГАЗОВОЙ сообщества на Google Plus, поэтому кредиты плакатах там.

https://plus.google.com/106333172328928589411/posts/7g3Vu7iFZfb

Sergii:. Заканчивать это суть, которая показывает, как сделать проверку подлинности 2 протокола OAuth в ГАС https://gist.github.com/rcknr/c5be4eb80d821158c8ef

Используя 2 протокола OAuth вы можете получить доступ к корму ATOM других пользователей :

кусок рабочего кода для него:

function gmail2lo(user) { 
var OAUTH_CONSUMER_SECRET = 'secret'; 
    var domain = 'domain'; //use the domain as key in apps panel 
    var username = 'user'; 
    var xuser = username+'@'+domain; 
    var method = "GET"; 
    var baseUrl = "https://mail.google.com/mail/feed/atom"; 

    var timestamp = Math.round(new Date().getTime()/1000); 

    var paramsJson; 
    var paramsOauth = { 
    oauth_consumer_key : domain, 
    oauth_nonce : timestamp, 
    oauth_signature_method : "HMAC-SHA1", 
    oauth_timestamp : timestamp, 
    oauth_version : "1.0", 
    'xoauth_requestor_id' : xuser 
    }; 

    var paramsStringArray = []; 
    for (var k in paramsJson) 
    paramsStringArray.push(k + '=' + encodeURIComponent(paramsJson[k])); 

    var oauthStringArray = []; 
    for (var k in paramsOauth) 
    oauthStringArray.push(k + '=' + encodeURIComponent(paramsOauth[k])); 

    var paramsString = paramsStringArray.concat(oauthStringArray).sort().join('&'); 
    var signatureBaseString = method +"&"+ encodeURIComponent(baseUrl) +"&"+ encodeURIComponent(paramsString); 
    var signatureBytes = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_1, signatureBaseString, OAUTH_CONSUMER_SECRET+'&'); 
    var signature = encodeURIComponent(Utilities.base64Encode(signatureBytes)); 

    var xoauthString = 'OAuth ' + oauthStringArray.sort().slice(0,oauthStringArray.length-1).join(", ") + ', oauth_signature=' + signature; 

    var ooptions = { 
    headers : {authorization: xoauthString} 
    } 

    url = baseUrl; 
    url += "?" + paramsStringArray.join("&") + '&xoauth_requestor_id=' + encodeURIComponent(xuser); 

    var response = UrlFetchApp.fetch(url, ooptions).getContentText(); 

} 
1

API Email Settings позволяет вам see which delegations are in place.

Невозможно, чтобы пользователь мог получить доступ к почтовому ящику другого пользователя, который делегировал им доступ через IMAP, поэтому вы не можете аутентифицироваться как пользователь и проверить делегированный почтовый ящик.

Вы должны использовать учетные записи службы OAuth 2.0 до authenticate to the mailboxes via IMAP.

После аутентификации вы можете выбрать папку «Вся почта» Gmail (или «Входящие», если хотите только подсчет для «Входящие»). и сделайте Gmail search of "is:unread", чтобы определить, сколько непрочитанных сообщений у пользователя есть.

FYI, мое приложение open-source, GYB может сделать именно это. Существует getting started guide for GYB. Вам также понадобится setup the service account. Команда, чтобы получить число непрочитанных сообщений для всей почты будет что-то вроде:

gyb --email [email protected] --service-account [email protected] --action count --search "is:unread" 
+0

Спасибо, что это направление. Я забыл упомянуть одно: я хочу сделать это с помощью скрипта Google Apps ... –

+0

Я не знаю о каком-либо методе достижения этого с помощью скрипта Google Apps. –

Смежные вопросы