Javascript 谷歌应用程序脚本驱动器错误
这是我在上的第一篇文章,所以我希望我做得正确。我有一个GoogleApps脚本,它被用作web钩子,用于创建两个服务之间的集成:YouCanBook.Me和Taleo。该脚本作为一个web应用程序发布,具有“任何人,甚至匿名”访问权限,并已运行数周。最近(我相信截至2014年2月3日),它停止工作,现在导航到公共URL会导致以下错误消息: Google Drive遇到错误。如果重新加载页面没有帮助,请报告错误 要了解有关Google Drive的更多信息,请访问我们的帮助中心 给您带来不便,我们深表歉意。谢谢你的帮助! -谷歌驱动团队 以下是整个脚本的代码:Javascript 谷歌应用程序脚本驱动器错误,javascript,google-apps-script,google-drive-api,Javascript,Google Apps Script,Google Drive Api,这是我在上的第一篇文章,所以我希望我做得正确。我有一个GoogleApps脚本,它被用作web钩子,用于创建两个服务之间的集成:YouCanBook.Me和Taleo。该脚本作为一个web应用程序发布,具有“任何人,甚至匿名”访问权限,并已运行数周。最近(我相信截至2014年2月3日),它停止工作,现在导航到公共URL会导致以下错误消息: Google Drive遇到错误。如果重新加载页面没有帮助,请报告错误 要了解有关Google Drive的更多信息,请访问我们的帮助中心 给您带来不便,我们
function doGet(request) {
try {
//Get token data from URL parameters
var candidateID = request.parameter.candID;
var requisitionID = request.parameter.reqID;
var interviewType = request.parameter.intType;
var requestType = request.parameter.request;
}
catch(e) {
Logger.log('Unable to capture required parameters. Error message: ' + e);
return;
}
//Get authToken by passing in credentials
var authToken = taleoLogin();
//Get candidate application ID
var candidateApplicationID = getCandidateApplicationID(authToken, candidateID, requisitionID);
//Make PUT request to change candidate's status
taleoSubmit(authToken, candidateID, requisitionID, candidateApplicationID, interviewType, requestType);
//Logout
taleoLogout(authToken);
}
function getCandidateApplicationID(authToken, candidateID, requisitionID) {
//Build API call
var loginURL = 'https://ch.tbe.taleo.net/CH06/ats/api/v1/object/candidateapplication?candidateId=' + candidateID + '&requisitionId=' + requisitionID;
var loginOptions = {
'method' : 'get',
'headers' : {
'cookie' : authToken
},
'contentType' : 'application/json; charset=utf-8'
};
//Make API call
try {
var loginResponse = UrlFetchApp.fetch(loginURL, loginOptions);
if (loginResponse.getResponseCode() == 200) {
Logger.log('Logged in!');
}
else {
Logger.log('Error logging in: ' + loginResponse.getContentText());
}
}
catch (e) {
Logger.log('Could not log in: ' + e);
}
//Return candidate application ID
return candidateApplicationID = JSON.parse(loginResponse).response.candtoreqs[0].candidateapplication.id.toFixed(0);
}
//-----------------------------------//
// Log into Taleo via the REST API //
//-----------------------------------//
function taleoLogin() {
//Build API call
var loginURL = 'https://ch.tbe.taleo.net/CH06/ats/api/v1/login?orgCode=[companyCode]&userName=[username]&password=[password]';
var loginOptions = {
'method' : 'post',
'contentType' : 'application/json'
};
//Make API call
try {
var loginResponse = UrlFetchApp.fetch(loginURL, loginOptions);
if (loginResponse.getResponseCode() == 200) {
Logger.log('Logged in!');
}
else {
Logger.log('Error logging in: ' + loginResponse.getContentText());
}
}
catch (e) {
Logger.log('Could not log in: ' + e);
}
//Return full authToken key
return authToken = 'authToken=' + JSON.parse(loginResponse).response.authToken;
}
//-------------------------------------//
// Log out of Taleo via the REST API //
//-------------------------------------//
function taleoLogout(authToken) {
//Build API call
var logoutURL = 'https://ch.tbe.taleo.net/CH06/ats/api/v1/logout';
var logoutOptions = {
'method' : 'post',
'headers' : {
'cookie' : authToken
},
'contentType' : 'application/json; charset=utf-8'
};
//Make API call
try {
var logoutResponse = UrlFetchApp.fetch(logoutURL, logoutOptions);
if (logoutResponse.getResponseCode() == 200) {
Logger.log('Logged out!');
}
else {
Logger.log('Error logging out: ' + logoutResponse.getContentText());
}
}
catch (e) {
Logger.log('Could not log out: ' + e);
}
}
//-----------------------------------------//
// Submit data to Taleo via the REST API //
//-----------------------------------------//
function taleoSubmit(authToken, candID, reqID, appID, intType, requestType) {
//If phone interview and initial booking
if(intType == 'phone' && requestType == 'booking') {
//Build API call
try {
var submitURL = 'https://ch.tbe.taleo.net/CH06/ats/api/v1/object/candidateapplication/' + appID;
var payload = JSON.stringify({ "candidateapplication" : { "candidateId" : candID, "requisitionId" : reqID, "status" : 5033 }});
var submitOptions = {
'method' : 'put',
'headers' : {
'cookie' : authToken
},
'contentType' : 'application/json; charset=utf-8',
'payload' : payload
};
}
catch (e) {
Logger.log('Error creating API call: ' + e);
}
}
else if(intType == 'final' && requestType == 'booking') {
//Build API call
try {
var submitURL = 'https://ch.tbe.taleo.net/CH06/ats/api/v1/object/candidateapplication/' + appID;
var payload = JSON.stringify({ "candidateapplication" : { "candidateId" : candID, "requisitionId" : reqID, "status" : 5048 }});
var submitOptions = {
'method' : 'put',
'headers' : {
'cookie' : authToken
},
'contentType' : 'application/json; charset=utf-8',
'payload' : payload
};
}
catch (e) {
Logger.log('Error creating API call: ' + e);
}
}
else if(intType == 'phone' && requestType == 'cancel') {
//Build API call
try {
var submitURL = 'https://ch.tbe.taleo.net/CH06/ats/api/v1/object/candidateapplication/' + appID;
var payload = JSON.stringify({ "candidateapplication" : { "candidateId" : candID, "requisitionId" : reqID, "status" : 5032 }});
var submitOptions = {
'method' : 'put',
'headers' : {
'cookie' : authToken
},
'contentType' : 'application/json; charset=utf-8',
'payload' : payload
};
}
catch (e) {
Logger.log('Error creating API call: ' + e);
}
}
else if(intType == 'final' && requestType == 'cancel') {
//Build API call
try {
var submitURL = 'https://ch.tbe.taleo.net/CH06/ats/api/v1/object/candidateapplication/' + appID;
var payload = JSON.stringify({ "candidateapplication" : { "candidateId" : candID, "requisitionId" : reqID, "status" : 5047 }});
var submitOptions = {
'method' : 'put',
'headers' : {
'cookie' : authToken
},
'contentType' : 'application/json; charset=utf-8',
'payload' : payload
};
}
catch (e) {
Logger.log('Error creating API call: ' + e);
}
}
//Make API call
try {
var submitResponse = UrlFetchApp.fetch(submitURL, submitOptions);
if (submitResponse.getResponseCode() == 200) {
Logger.log('Results submitted!');
}
else {
Logger.log('Error submitting results: ' + submitResponse.getContentText());
}
}
catch (e) {
Logger.log('Could not submit results: ' + e);
}
}
你好,smackjack3,当我写了一些不可能的东西时,我遇到了这些错误,例如,当我忘记了一个“+”符号,或者当我将“+”替换为“=”时。我最好的猜测是返回行“return authToken=”authToken=“”。但您可以尝试检查代码,删除大部分代码。如果您没有收到此错误,但代码没有返回预期的内容(因为不完整),您将知道在哪里查找。谢谢您的建议。如果我在代码编辑器中执行,代码运行良好。“错误”出现在尝试从公共URL访问/执行脚本时。我刚刚意识到,尽管我收到了Google Drive错误消息,以及来自YouCanBook.Me服务的错误消息,但脚本实际上仍在执行。显然,即使脚本执行得很好,我也没有从服务器得到200个响应。出于某种原因,页面似乎返回了500个响应代码。我试图编辑OP,但它一直告诉我代码格式不正确,即使我不碰它也不允许保存。我遇到了完全相同的问题。我也在日志和跟踪中看到我的脚本运行得很好。但是谷歌硬盘的错误也让我很沮丧。@LouisKleiman我找到了一个解决办法,这要感谢Google+社区中的某个人。如果将以下代码添加到doGet()函数中,似乎可以解决问题:var app=UiApp.createApplication();返回应用程序;