Я намагаюся записати дані у базу даних Firebaseза допомогою запиту Google Apps Script HTTP PUT. Ось що я маю для коду. Я налагодив кожен рядок, і все працює, крім власне запиту PUT.
Веб-сторінка з однією кнопкою в ній.
<section>
<input onclick="WriteInput()" type="button" value="Save Input">
</section>
<script>
function onSuccess() {
alert("on success ran");
};
function onFailure() {
alert("on failure ran");
};
function WriteInput() {
alert("it ran");
google.script.run.withFailureHandler(onFailure)
.withSuccessHandler(onSuccess)
.putToFire();
}
</script>
Це код .gs на стороні сервера:
function doGet(){
return HtmlService.createTemplateFromFile("WriteToFirebase")
.evaluate() // evaluate MUST come before setting the NATIVE mode
.setTitle("Test Write")
.setSandboxMode(HtmlService.SandboxMode.NATIVE);
}
function putToFire() {
var payload =
{
"first" : "Jack",
"last" : "Sparrow"
};
var options =
{
"method" : "put",
"payload" : payload
};
UrlFetchApp.fetch("https://SampleChat.firebaseIO-demo.com/users/fred/name.json", options );
Logger.log(options);
}
Ось документація Google для надсилання запиту HTTP із сценарієм Apps:
Це документація Firebase REST API:
в cURL -X
полягає у встановленні типу запиту. Наприклад PUT, POST та ін -d
- це вказівка на те, що дані повинні слідувати: Матч з Google Fetch
- встановити значення params
.
Напевно, мені просто не вистачає налаштування синтаксису чи чогось іншого.
Відповіді:
1 для відповіді № 1Я насправді знайшов відповідь на свою проблему. Я не можу згадати, що таке повідомлення про помилку. Я змінив
THIS:
var options =
{
"method" : "put",
"payload" : payload
};
ДО ЦЬОГО:
var options = {"method" : "put", "payload" : payload};
І це почало працювати. Я здогадуюсь, що багаторядковий код мав end of line
return
символів у ньому, щоб Firebase не аналізував. Це лише моє припущення.
Цей приклад показує payload
, options
і Apps Script
UrlFetchApp.fetch
сервіс
var payload = "{"aa" : "" + UserID + "", "ab" : "" + Maker + "", "ac" : " +
AskingPrice + ", "ad" : "" + Type +
"", "ae" : "" + Description + "", "af" : "" + Function + "", "ag" : "" +
Cosmetic + "", "ah" : "" + dbID +
"", "ai" : "" + IPaddr + ""}";
var options = {"method" : "put", "payload" : payload};
UrlFetchApp.fetch("https://MyFireBaseDatabaseName.com/" + Ctgry + "/"
+ dbID + "/.json", options );