我正在开发,将插入一行到一个融合表一个谷歌的Google Apps脚本功能。 我的大部分融合表的接口工作正常,但这个是我在一个SQL“POST”查询的第一次尝试。 根据相关文档在这里我应该能够把POST体内的SQL语句。 我自己降低到OAuth园地进行故障排除和我不断收到以下错误。 我一直在试图使用SQL INSERT语句sql=INSERT INTO {fusionId} (HeadingName) VALUES (ValueOne)
和我已经试过这句话的各种变化都无济于事。 请帮我确定正确的语法或方法来做到这一点。
{
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Required parameter: sql",
"locationType": "parameter",
"location": "sql"
}
],
"code": 400,
"message": "Required parameter: sql"
}
}
有一次,我想出解决办法,然后我需要复制我的代码,(我认为)内的操场操作将是这个样子:
function fusionRequest(methodType, sql, oAuthFields) {
OAL.googleAuth(oAuthFields);
var options =
{
oAuthUseToken : "always",
oAuthServiceName : 'fusiontables',
method : "POST",
payload : "sql=INSERT INTO {fusionId} (Heading) VALUES (ONE)",
contentType : "application/json"
};
Logger.log(options)
var fetchResult = UrlFetchApp.fetch(oAuthFields.queryUrl, options);
return JSON.parse(fetchResult.getContentText());
}
我一直在想这也可能是与内容类型的问题,但我很茫然。 请帮忙。
更新#1使用三亚的意见,我是能够得到在OAuth游乐场工作的要求。 不过,我仍然在代码请求挣扎。 运行的代码(或调试时,一般OAuth错误)时,我得到授权的一再要求。 从我以前的经验在这里 ,我相信这意味着,还有什么毛病我的有效载荷。 在这个任何建议,将不胜感激。
var oAuthFields = {
'clientId' : '523606257547.apps.googleusercontent.com',
'scope' : 'https://www.googleapis.com/auth/fusiontables',
'fetchUrl' : 'https://www.googleapis.com/fusiontables/v1/',
'clientSecret' : 'L-f8DgwK4rs7Qmw9k5IFL7lZ',
'fusionId' : '1b4kT_aYRfNBy8ZPtSZqhQUqVSVIYj_QWiBmjXXI',
'service' : 'fusiontables',
'queryUrl' : 'https://www.googleapis.com/fusiontables/v1/query/'
};
function fusionRequest(methodType, sql, oAuthFields) {
OAL.googleAuth(oAuthFields);
var options =
{
oAuthUseToken : "always",
oAuthServiceName : 'fusiontables',
method : "POST",
payload : "sql=INSERT INTO {fusion id} (\'Heading\') VALUES (\'ONE\')",
contentType : "application/x-www-form-urlencoded"
};
var fetchResult = UrlFetchApp.fetch(oAuthFields.queryUrl, options);
return JSON.parse(fetchResult.getContentText());
}
对于背景下,这一功能的googleAuth()函数和整体布局是一样的,因为我可以用它在融合表中添加列(工作)的功能。