我正在尝试将一行数据添加到Fusion Table。似乎有OAuth的麻烦。我通过请求令牌并收到一个并存储它。这是用于执行此操作的代码:
var AUTHORIZE_URL = 'https://accounts.google.com/o/oauth2/auth';
function getURLForAuth(){
return AUTHORIZE_URL + '?response_type=code&client_id='+CLIENT_ID+'&redirect_uri='+REDIRECT_URL +'&scope=https://www.googleapis.com/auth/fusiontables&state=/profile';
}
在允许访问google网站页面后,此代码为我提供了一个页面,我可以从中获取令牌并存储它。然后,我尝试使用此标记将一些值插入到具有以下代码的表中:
function _submitLog(e){
var rowToAdd = [e.parameter.empName,e.parameter.jobName,e.parameter.taskName,e.parameter.hoursBox, e.parameter.date];
runSQL("INSERT INTO "+TABLE_NAME +" (logNum,EmployeeName,JobName,TaskName,Hours,Date) VALUES (" +"'" +e.parameter.empName +"'" +"," +"'"+e.parameter.jobName +"'"+"," +"'"+e.parameter.taskName+"'" +"," +"'"+e.parameter.hoursBox+"'" +"," +"'"+e.parameter.date+"'" +")")
}
function runSQL(sql){
var getDataURL = 'https://www.googleapis.com/fusiontables/v1/query?sql='+sql;
var dataResponse = UrlFetchApp.fetch(getDataURL,getUrlFetchOptions()).getContentText();
Logger.log(dataResponse);
return dataResponse;
}
function getUrlFetchOptions() {
var token = UserProperties.getProperty(tokenPropertyName);
Logger.log(token);
return {
"method" : "post",
"ContentType" : "application/json",
"headers":{"Authorization" :"Bearer "+token,
"Accept" :"application/json"}
};
}
我确定我错过了一些非常明显的东西,但我已经盯着看了好几个小时而且无法想出来。
任何帮助,甚至是我可能已经消除的最佳实践都会很棒。
答案 0 :(得分:2)
看起来你错过了一些细节,但不要把自己打倒。看看这个出色的Fusion Tables Library,其中包含一个函数doOAuth()
,可以为您的脚本设置授权,而无需自己编写。
您需要使用您获得的令牌设置ScriptProperty - 指令随库一起提供。然后从调试器中调用doAuth()
(两次),然后就可以开始了。
我应该从詹姆斯F那里获得版税!
答案 1 :(得分:1)
点击Here以获取从Google应用脚本发布到Fusion Tables API的基本完整示例。