AJAX post de feuille de calcul google
j'essaie de poster des données de formulaire sur une feuille de calcul google. Actuellement, si le formulaire est validé, alors le suivant se produit:
if (validateForm === true) {
$.ajax({
type: 'post',
url: 'https://docs.google.com/spreadsheet/ccc?key=0AlwuDjMUxwhqdGp1WU1KQ0FoUGZpbFRuUDRzRkszc3c',
data: $("#workPLZ").serialize(),
success: alert($("#workPLZ").serialize())
});
}
else {}
j'ai utilisé le paramètre de succès pour vérifier que les données de mon formulaire sont sérialisées correctement (c'est) et qu'elles sont réussies. Cependant, ma feuille de calcul google n'est pas mise à jour (aucune donnée n'est transmise). J'ai utilisé le code d'exemple ici, en changeant doGet en doPost (http://mashe.hawksey.info/2011/10/google-spreadsheets-as-a-database-insert-with-apps-script-form-postget-submit-method/), et ont rendu la feuille de calcul google accessible au public (et modifiable par quiconque). J'ai suivi les instructions, j'ai copié le code pour googledocs, puis j'ai lancé la configuration deux fois (la première fois que j'ai demandé la permission, La deuxième fois que je l'ai lancée, Je n'ai rien remarqué). Quelqu'un peut-il m'aider? Je me sens comme je suis super proche.
3 réponses
très Bien, je suis venu avec une solution. Après avoir été informé des questions AJAX inter-domaines, j'ai décidé d'aller de l'avant et de suivre à un "t" la méthode utilisée par l'auteur de l'article à http://mashe.hawksey.info/2011/10/google-spreadsheets-as-a-database-insert-with-apps-script-form-postget-submit-method/.
pour afficher des données sur votre tableur google, faites d'abord le tableur et changez le nom de la feuille (coin inférieur gauche) en données. Ensuite, ouvrez l'éditeur de script (Tools ==> Script Editor) dans votre tableur et coller le script de l'article. Remplacer " doGet(e)" par "doPost (e)". Exécutez le script de configuration deux fois. La première fois qu'il demandera la permission d'exécuter (grant it), puis la deuxième fois que vous sélectionnez de l'exécuter, vous n'obtiendrez aucune indication popup qu'il a exécuté (j'ai lancé le mien dans l'éditeur donc il a dit "running setUp" au-dessus de la zone d'entrée de code, mais c'était tout). Après cela, sélectionnez " Publish "dans l'éditeur de script, puis sélectionnez"Publish as Service". Cliquez sur l' "Permettre à quiconque d'invoquer ce service "Bouton radio et la case" Autoriser l'accès anonyme". Copiez l'URL (c'est IMPORTANT!) et cliquez sur "Activer le Service". C'était "difficile".
dans votre forme HTML, chaque élément que vous soumettez doit avoir un attribut "nom" (par exemple ) ce nom est la façon dont les données sont envoyées - chaque entrée est attachée à son nom. Assurez-vous que pour chaque donnée de forme que vous recueillez, il a un nom, et ce nom est entré comme une colonne sur votre tableur (comment ça cartes les données de votre formulaire à votre feuille de calcul). Pour votre formulaire, définissez la méthode de post et de l'action à votre "Publier en tant que Service" URL (qui, je vous l'ai dit à enregistrer) comme ceci:
<form id="formID" method="post" action="URL" target="hidden_iframe">
j'ai inclus un id de formulaire pour que je puisse sélectionner le formulaire et le soumettre avec jquery. Dans votre HTML, avant le formulaire ci-dessus, ajoutez votre iframe cachée:
<iframe name="hidden_iframe" id="hidden_iframe" style="display:none;"></iframe>
définir une sorte de validation du formulaire (Pas nécessaire, mais si chaque champ n'est pas rempli, vous obtiendrez des données incomplètes dans votre tableur), et si elle est validée l'appeler un jquery .soumettre.)( par exemple:
if (formValidation === true){
$("#formID").submit();
}
else {}
voilà. Bonne chance!
comme le Script Googleapps a maintenant un ContentServicea publié une version mise à jour de cette technique qui comprend un exemple ajax
les utilisateurs peuvent également envisager de passer à cette nouvelle version car elle utilise d'autres nouveaux services de Script Googleapps, en particulier:
- à l'aide de LockService pour empêcher l'accès simultané en écriture; et
- passer à la nouvelle PropertiesService pour stocker les données de script
je vais vous montrer la façon facile d'envoyer des données à une feuille de calcul Google sans AJAX ni formulaire Google, ou PHP...juste Google Tableur et HTML ou même Android.
- créer une nouvelle feuille de calcul Google.
- Ouvrir Outils/éditeur de script
vous avez juste besoin de deux fichiers dans l'éditeur, Un HTML et un Code.gs:
un exemple:
aller au fichier / nouveau nom HTML ceci file=Index.html:
<!DOCTYPE html> <html> <head> <base target="_top"> <script> function Enviar(){ var txt1=document.getElementById("txt1").value; var txt2=document.getElementById("txt2").value; var txt3=document.getElementById("txt3").value; google.script.run.doSomething(txt1,txt2,txt3); } </script> </head> <body> Prueba de Envio de informacion<br> <input type="text" value="EMAIL" name="txt1" id="txt1"><br> <input type="text" value="CEDULA" name="txt2" id="txt2"><br> <input type="text" value="NOMBRE" name="txt3" id="txt3"><BR> <Button name="btn1" onClick="Enviar();">Enviar</button> </body> </html>
dans le même script, allez à de Code.fichier gs et type:
function doGet() { return HtmlService.createHtmlOutputFromFile('Index') .setSandboxMode(HtmlService.SandboxMode.IFRAME); } function doSomething(s1,s2,s3){ Logger.log('datos:'+s1+" "+s2+" "+s3); var enlace="https://docs.google.com/spreadsheets/d/ 1XuAXmUeGz2Ffr11R8YZNihLE_HSck9Hf_mRtFSXjWGw/edit"; var ss = SpreadsheetApp.getActiveSpreadsheet(); var ss = SpreadsheetApp.openByUrl(enlace); var sheet = ss.getSheets()[0]; sheet.appendRow([s1, s2, s3]); Logger.log(ss.getName()); }
où enlace est l'url de votre tableur
- publiez comme application App et obtenez l'url de votre nouveau Script. Maintenant, vous pouvez utiliser cette url comme intégré dans votre application HTML ou android app. C'est tout. L'utilisateur sera demandé pour l'autorisation d'ouvrir ce script