0

我正在尝试将一行数据添加到融合表中。似乎在使用 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"}


 };
}

我确定我遗漏了一些非常明显的东西,但我已经盯着看了好几个小时,还是想不出来。任何帮助,即使是关于我可能已经抹杀的最佳实践,都会很棒。

4

2 回答 2

2

看起来你确实遗漏了一些细节,但不要让自己失望。看看这个优秀的Fusion Tables Library,它包括一个doOAuth()为您的脚本设置授权的功能,而无需您自己编写。

您需要使用您获得的令牌设置 ScriptProperty - 说明随库一起提供。然后doAuth()从调试器调用(两次),你就可以开始了。

我应该为此从詹姆斯 F 那里获得版税!

于 2013-05-16T01:40:57.347 回答
1

单击此处获取从 Google 应用程序脚本 POST 到 Fusion Tables API 的基本示例的完整示例。

于 2013-05-17T15:23:35.590 回答