我建立了一些包装库在GAS的一些域管理员的API。 我有一个处理的OAuth,网址抓取,XML到对象和对象到XML功能的通用库。 我加入这个作为一个库到我的API封装。 我创建第一个是为EmailAuditAPI。 当我加载EmailAuditAPI作为库这一切正常。 我创建的第二API包装是为GmailSettingsAPI。 此包装内工作本身很好,但是当我把它从那里已加载作为库另一个脚本不能正常工作。 为了更直观的你
GoogleAPITools - > EmailAuditAPI包装 - >项目脚本:作品!
GoogleAPITools - > GmailSettingsAPI包装 - >项目脚本:不行!
GoogleAPITools - > GmailSettingsAPI包装:作品!
我觉得这是最重要的代码:
GoogleAPITools
function callGApi(apiUrl,authScope,method,payloadIn)
{
//oAuth & Fetch Arguments
var fetchArgs = googleOAuth_("google", authScope);
fetchArgs.method = method ? method : "GET";
if(payloadIn)
{
fetchArgs.contentType = "application/atom+xml";
fetchArgs.payload = payloadIn;
}
var urlFetch = UrlFetchApp.fetch(apiUrl, fetchArgs); //This line fails w/ not working wrapper
var returnObject = urlFetch.getContentText() != '' ? Xml.parse(urlFetch.getContentText()) : urlFetch.getResponseCode();
return returnObject;
}
//Google oAuth
function googleOAuth_(name,scope)
{
var oAuthConfig = UrlFetchApp.addOAuthService(name);
oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope);
oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken");
oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");
oAuthConfig.setConsumerKey("anonymous");
oAuthConfig.setConsumerSecret("anonymous");
return {oAuthServiceName:name, oAuthUseToken:"always"};
}
当加载到第三脚本库这个包装工作。
function getAccountInfoRequest(user,reqId)
{
var properties = GoogleAPITools.callGApi(ACCOUNTINFOURL + user + "/" + reqId,AUDITSCOPE).entry.property;
return GoolgeAPITools.returnXmlToObject(properties);
}
当加载到第三脚本库这个包装是不行的,但它确实对自己的工作。 该GoogleAPITools加载为两个包装脚本库。
GmailSettingsAPI Wrapper
//Get Signature
function getSignatureForUser(user)
{
var returnedInfo = GoogleAPITools.callGApi(EMAILSETTINGSURL + user + "/signature",EMAILSETTINGSSCOPE);
return GoolgeAPITools.returnXmlToObject(new Array(returnedInfo.entry.property));
}
第三个项目脚本加载的库都包装:
function testApiWrappers() {
var user = "john";
var reqId = "123456789";
Logger.log(AuditApi.getAccountInfoRequest(user,reqId));
Logger.log(GmailSettingsApi.getSignatureForUser(user)); //Fails here
}
在我的日志我看到了AuditApi调用返回的,但我得到一个“意外的错误:”引用的URLFetch在GoogleAPITools脚本。
有两个API的东西了解OAuth不同? 有没有在我的代码刺目的东西,我错过了? 任何帮助将是巨大的。