我正在寻找一种方法,可以从任何Google API中查找已委派邮箱的未读邮件数。
我不确定这是否可行,但它可以帮助我为一家公司开发一个帮助工具,用于1000多个用户。许多代表团正在进行中,我渴望找到一种方法来实现这一目标。
但是我可能需要一些帮助,可能是那些知道Google管理SDK可能性的人。
我想使用Google Apps脚本收集未读邮件数。
答案 0 :(得分:1)
电子邮件设置API允许您see which delegations are in place。
用户无法访问通过IMAP委派他们访问权限的其他用户的邮箱,因此您无法以用户身份进行身份验证并检查委派的邮箱。
您应该使用OAuth 2.0服务帐户authenticate to the mailboxes via IMAP。
经过身份验证后,您可以选择Gmail“所有邮件”文件夹(如果您只想计入收件箱,则可以选择收件箱)。然后执行Gmail search of "is:unread"以确定用户有多少条未读消息。
仅供参考,我的open-source应用,GYB可以做到这一点。有一个getting started guide for GYB。您还需要setup the service account。获取所有邮件的未读邮件计数的命令将类似于:
gyb --email delegated-mailbox@yourcompany.com --service-account your-service@account.com --action count --search "is:unread"
答案 1 :(得分:0)
我在Google Plus上获得了GAS社区的答案,因此请在那里宣传海报。
https://plus.google.com/106333172328928589411/posts/7g3Vu7iFZfb
塞尔吉: 查看此要点,了解如何在GAS https://gist.github.com/rcknr/c5be4eb80d821158c8ef中执行2版OAuth身份验证。
使用2 Legged Oauth,您可以访问其他用户的ATOM Feed:
它的一段工作代码:
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();
}