Estou tentando gravar dados em um banco de dados Firebaseusando a solicitação HTTP PUT do Google Apps Script. Aqui está o que eu tenho como código. Eu depurei todas as linhas e tudo funciona, exceto para a solicitação PUT real.
Página da Web com um botão.
<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>
Este é o código .gs do lado do servidor:
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);
}
Esta é a documentação do Google para emitir uma solicitação HTTP com o Apps Script:
buscar url de documentação do Google
Esta é a documentação da API REST do Firebase:
dentro cURL -X
é definir o tipo de solicitação. Por exemplo. PUT, POST, etc e -d
é o indicar que os dados devem seguir: A correspondência com o Google Fetch
é definir o params
.
Devo estar faltando apenas uma configuração de sintaxe ou algo assim.
Respostas:
1 para resposta № 1Na verdade, encontrei uma resposta para o meu problema. Não consigo me lembrar qual era a mensagem de erro. Eu mudei
ISTO:
var options =
{
"method" : "put",
"payload" : payload
};
PARA ISSO:
var options = {"method" : "put", "payload" : payload};
E começou a funcionar. Estou supondo que o código de várias linhas end of line
return
caracteres nele, que o Firebase não analisaria. Isso é apenas meu palpite.
Este exemplo mostra payload
, options
e a Apps Script
UrlFetchApp.fetch
serviço.
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 );