フュージョン テーブルに行を挿入する Google Apps スクリプト関数を開発しています。私のフュージョン テーブル インターフェイスのほとんどは正常に動作しますが、これは SQL 'POST' クエリでの最初の試みです。ここのドキュメントに基づいて、SQLステートメントをPOST本文に入れることができるはずです。トラブルシューティングのためにOAuth Playgroundに自分自身を減らしましたが、次のエラーが引き続き発生します。私はSQL挿入ステートメントを使用しようとしてきましたが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 Sanya のアドバイスを使用して、OAuth Playground でリクエストを機能させることができました。ただし、コード内のリクエストにはまだ苦労しています。コードの実行時に承認のリクエストが繰り返されます (または、デバッグ時に一般的な 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() 関数とこの関数の全体的なレイアウトは、融合テーブルに列を追加するために使用する関数と同じです (機能します)。