AJAX post do arkusza kalkulacyjnego google

Próbuję opublikować dane formularza w arkuszu kalkulacyjnym google. Obecnie, Jeśli formularz jest walidowany, wtedy następuje:

if (validateForm === true) {
        $.ajax({
            type: 'post',
            url: 'https://docs.google.com/spreadsheet/ccc?key=0AlwuDjMUxwhqdGp1WU1KQ0FoUGZpbFRuUDRzRkszc3c',
            data: $("#workPLZ").serialize(),
            success: alert($("#workPLZ").serialize())
        });
    }
    else {}

Użyłem Ustawienia Sukces, aby sprawdzić, czy moje dane formularza są serializowane poprawnie (tak) i czy się powiodły. Jednak mój arkusz kalkulacyjny google nie jest aktualizowany(żadne dane nie przechodzą). Użyłem tutaj przykładowego kodu, zmieniając dogeta na doPost (http://mashe.hawksey.info/2011/10/google-spreadsheets-as-a-database-insert-with-apps-script-form-postget-submit-method/), i udostępniły publicznie arkusz kalkulacyjny google (i edytowalny przez każdego). Postępowałem zgodnie z instrukcjami, kopiując kod do googledocs, a następnie uruchamiając konfigurację dwa razy (pierwszy raz poprosił o pozwolenie, drugi raz uruchomiłem go nie zauważyłem nic się stało). Czy ktoś może mi pomóc? Czuję, że jestem bardzo blisko.

Author: Rubén, 2012-04-03

3 answers

W porządku, wymyśliłem rozwiązanie. Po otrzymaniu informacji o problemach AJAX między domenami, postanowiłem przejść do "t" metody stosowanej przez autora artykułu w http://mashe.hawksey.info/2011/10/google-spreadsheets-as-a-database-insert-with-apps-script-form-postget-submit-method/.

Aby opublikować dane do arkusza kalkulacyjnego google, najpierw wykonaj arkusz kalkulacyjny i zmień nazwę arkusza (lewy dolny róg) na dane. Następnie otwórz edytor skryptów (narzędzia = = > skrypt Edytor) w arkuszu kalkulacyjnym i wklej skrypt z artykułu. Zmień "doGet (e)" na " doPost(e)". Uruchom skrypt instalacyjny dwa razy. Za pierwszym razem poprosi o pozwolenie na uruchomienie (przyznaj go), a za drugim razem Wybierz, aby go uruchomić, nie otrzymasz żadnych wskazań popup, że został uruchomiony(uruchomiłem swój w edytorze, więc napisano" running setUp " nad obszarem wprowadzania kodu, ale to wszystko). Następnie wybierz "Publikuj" w Edytorze skryptów, a następnie wybierz "Publikuj jako usługa". Kliknij przycisk " Zezwól na wywołaj tę usługę "przycisk radiowy i pole wyboru" Zezwalaj na dostęp anonimowy". Skopiuj adres URL (ważne!) i kliknij "Włącz usługę". To była "trudna część".

W formularzu HTML, każdy element, który przesyłasz musi mieć atrybut "name" (np. ) Ta nazwa to sposób wysyłania danych - każdy wpis jest dołączony do jego nazwy. Upewnij się, że dla każdego elementu danych formularza, który gromadzisz, ma on nazwę i jest wprowadzany jako kolumna w arkuszu kalkulacyjnym (w ten sposób mapuje dane z formularza do arkusza kalkulacyjnego). W formularzu Ustaw metodę publikowania i akcję na adres URL "Publikuj jako usługa" (który kazałem ci zapisać) w następujący sposób: {]}

<form id="formID" method="post" action="URL" target="hidden_iframe">

Dodałem identyfikator formularza, więc mogę wybrać formularz i przesłać go za pomocą jquery. W HTML, przed powyższym formularzem, dodaj swój ukryty iframe:

<iframe name="hidden_iframe" id="hidden_iframe" style="display:none;"></iframe>

Ustaw jakiś rodzaj walidacji formularza (nie jest to konieczne, ale jeśli każde pole nie zostanie wypełnione, otrzymasz niekompletne dane w arkuszu kalkulacyjnym), a jeśli zostanie zweryfikowane, miej nazywa się jquery .submit (). np.:

    if (formValidation === true){
           $("#formID").submit();
    }
    else {}
Więc to tyle. Powodzenia!
 35
Author: Stuart Nelson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-04 18:31:00

Ponieważ Google Apps Script ma teraz ContentService, który może zwracać odpowiedzi JSON, możliwe jest składanie żądań ajax bez użycia ukrytego iframe. Jako autor artykułu oryginalnego rozwiązania mam opublikował zaktualizowaną wersję tej techniki, która zawiera przykład ajax

Użytkownicy mogą również rozważyć przejście na tę nową wersję, ponieważ korzysta ona z innych nowych usług skryptowych Google Apps, w szczególności:

 11
Author: mhawksey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-06 09:00:37

Pokażę Ci łatwy sposób wysyłania danych do arkusza kalkulacyjnego Google bez AJAX ani formularza Google, ani PHP...wystarczy arkusz kalkulacyjny Google i HTML, a nawet Android.

  1. Utwórz nowy arkusz kalkulacyjny Google.
  2. Open Tools / script editor

Wystarczy dwa pliki w edytorze a HTML i a Code.gs:

Jako przykład:

  1. Go To File/new HTML name this 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>
    

Są 3 pola do wysłania: EMAIL, CEDULA, NOMBRE

  1. W tym samym skrypcie przejdź do de Code.gs plik i typ:

    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());
    }
    

Gdzie enlace jest adresem url arkusza kalkulacyjnego

  1. Opublikuj jako aplikację i uzyskaj adres url nowego skryptu. Teraz możesz użyć tego adresu URL jako osadzenia w aplikacji HTML lub aplikacji na Androida. To wszystko. Użytkownik zostanie poproszony o pozwolenie na otwarcie tego skryptu
 3
Author: user5807327,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-03 02:08:16