Estoy tratando de crear un script que analiza una página y envía los resultados a una hoja de cálculo de google docs a través de un formulario que he definido.

El correspondiente bit de la secuencia de comandos es:

var form = document.createElement("form");

form.action = "http://spreadsheets.google.com/formResponse?formkey=Fd0SHgwQ3YwSFd5UHZpM1QxMlNOdlE6MA&ifq";
form.method = "POST";
form.id="ss-form";
form.innerHTML = ["<input id='entry_0' name = 'entry.0.single' value = '" + orderDate + "'/>", "<input name = 'entry.2.single' value = '" + email + "'/>", "<input name = 'entry.3.single' value = '" + customerID + "'/>", ].join("");
form.submit();


alert(form.innerHTML);

//devuelve:

Nada se guarda el formulario a través de la bookmarklet – cualquier forma de captura de google la respuesta en mi bookmarklet del código? (por lo que vale, me he inyectado jQuery a través de jQueryify)

EDICIÓN:

Firebug Neto del panel no es la audiencia de cualquier tipo de actividad provocada por el bookmarklet – acerca de Cómo enfocar esto de goolgle del viewform método en lugar de formresponse.

La forma que estoy tratando de presentar se encuentra en:

http://spreadsheets.google.com/viewform?hl=en&formkey=dFd0SHgwQ3YwSFd5UHZpM1QxMlNOdlE6ma

Cómo se puede ir sobre la inyección de la secuencia de comandos de valores en la que la forma y, a continuación, la presentación que – de nuevo…a través de la secuencia de comandos dentro de la bookmarklet que habría sido provocado, mientras que en la página que se analiza?

Para resolver el 405 problema con firefox, uso libcurl. Debe ser capaz de hacerlo en Php y Python.
Enlace útil : eureka.ykyuen.info/2014/07/30/…

OriginalEl autor justSteve | 2010-01-24

7 Comentarios

  1. 7

    si tu ya usando jquery, intente enviar el formulario a través de ajax ($.ajax). Puede configurar un éxito de la función que será llamada cuando google envía su respuesta.

    alternativamente, usted debería ser capaz de usar firebug para ver la respuesta de google envía de vuelta.

    Específicamente, yo estaba pensando que podría intentar algo como lo siguiente:

    $.ajax({
      url: "http://spreadsheets.google.com/formResponse",
      data: { formkey: "Fd0SHgwQ3YwSFd5UHZpM1QxMlNOdlE6MA&ifq", "entry.0.single": orderDate, "entry.2.single": email, "entry.3.single": customerID },
      type: "POST",
      dataType: "xml",
      success: function(data, textStatus, XMLHttpRequest) {
        console.log("success");
        console.log(data);
      },
      error: function(XMLHttpRequest, textStatus, errorThrown) {
        console.log("error");
        console.log(textStatus);
      },
    })
    Thankx mucho para mayor detalle…yo he probado un par de variaciones en el código – por cualquier razón – ‘de la consola no está definido’, así que sólo estoy tirando cosas a un cuadro de alerta: tal vez esta tapa de pantalla le ayudará a: screencast.com/t/ZDZhNDVmM de nuevo…thx por la ayuda
    usted probablemente pensó en ello ahora, pero la consola es única para el plugin firebug.
    la consola.log() se puede usar en Chrome
    sólo iniciar sesión: error error… tiene algo ha cambiado en el ínterin?
    Esto no va a funcionar porque va a ser una Cruz solicitud de Origen..

    OriginalEl autor buckley

  2. 4

    Acabo de hacer tal cosa. He aquí un desglose de mi proceso.

    Tengo que mantener una lista de citas de diferentes páginas web, y para añadir algo de información para cada cita.

    Mi bookmarklet dinámicamente generar un formulario de google (solo he visto la fuente de la verdadera formulario de google que ya he creado), que va a rellenar automáticamente la url de la página actual, el título de la página, y el texto seleccionado, que, se enviará el formulario.

    Ya que la necesito para agregar manualmente info, yo intencionalmente no incluyen al menos un campo obligatorio, así que voy a recibir el formulario de google con un mensaje de error (pero con la url, el título de & cita ya está lleno). Ahora puedo agregar manualmente todos los demás info que necesito y enviar el formulario.

    Si el bookmarklet de rellenar todos los campos obligatorios usted acaba de recibir el formulario de google éxito de la respuesta «Gracias! Su respuesta ha sido registrada.»

    He utilizado el siguiente sitio para generar un script que uso jQuery:
    http://benalman.com/code/test/jquery-run-code-bookmarklet/
    (Estoy usando jQuery para ser capaz de chatarra información adicional & contenido de la página web)

    A ser capaz de usar ese sitio correctamente, tendrás que escapar de su one-liner html (puede utilizar esta herramienta de escape)

    Los pasos necesarios son:

    1. Crear un formulario de google /hojas de cálculo
    2. Ver el origen de la forma y copiar los campos que desea el bookmarklet para llenar
    3. Escapar el html y el uso este para escribir un script que llenar la información de este sitio creará el bookmarklet para que

    Así que en mi caso:

    1. He creado un formulario en el que se incluyen un campo de texto para mantener la url, otro campo de texto para contener el título de la página, un párrafo de texto para sostener la cotización (el texto seleccionado). El formulario también se incluyen algunos otros campos obligatorios que me llene manualmente.

    2. He preparado el siguiente código html:

     <form method="POST" 
    action="https://spreadsheets.google.com/spreadsheet/formResponse?formkey=XYZXYZXYZXYZXYZXYZXYZ&amp;ifq"> 
    <input type="text" name="entrada.0.solo" value="" id="entry_0" /> 
    <input type="text" name="entrada.3.solo" value="" id="entry_3" /> 
    <textarea name="entrada.2.solo" id="entry_2"></textarea> 
    <input type="submit" name="submit" value="enviar" /> 
    </form> 
    

    (entry_0 – url, entry_3 – título de la página, entry_2 – cita)

    3. Después de poner en una línea, y para escapar de ella. He utilizado la siguiente secuencia de comandos:

    frm = $(unescape('%3Cform%20action%3D%22https%3A//spreadsheets.google.com/spreadsheet/formResponse%3Fformkey%3DXYZXYZXYZXYZXYZXYZXYZ%26amp%3Bifq%22%20method%3D%22POST%22%3E%0A%3Cinput%20type%3D%22text%22%20name%3D%22entry.0.single%22%20value%3D%22%22%20id%3D%22entry_0%22%20/%3E%0A%3Cinput%20type%3D%22text%22%20name%3D%22entry.3.single%22%20value%3D%22%22%20id%3D%22entry_3%22%20/%3E%0A%3Ctextarea%20name%3D%22entry.2.single%22%20id%3D%22entry_2%22%3E%3C/textarea%3E%0A%3Cinput%20type%3D%22submit%22%20name%3D%22submit%22%20value%3D%22submit%22%20/%3E%0A%3C/form%3E'));
    $(frm).children('#entry_0').attr('value',location.href);
    $(frm).children('#entry_3').attr('value',$('title')[0].innerHTML);
    $(frm).children('#entry_2').html(window.getSelection().toString());
    $(frm).children('input[type=submit]').click()

    Este método ha sido probado con chrome.
    Buena suerte!

    Gracias!!!! Que es genial!!!

    OriginalEl autor dvb

  3. 4

    Para cualquier persona en el futuro, asegúrate de que la URL que usted está enviando a ha &ifq al final, he descubierto que esta tiene fija fácilmente a la mayoría de mis problemas con 405 devuelve.

    OriginalEl autor Pyrouscent

  4. 2

    Como el de hoy no podía obtener la respuesta marcada derecho al trabajo. Creo que google ha cambiado un par de cosas.

    Que yo pudiera llegar a trabajar por hacer un POST de HTTP a https://docs.google.com/forms/d/<form_id>/formResponse

    con datos del formulario como entry.645136839=<somevalue> donde el gran número se obtiene a partir del campo de formulario.

    OriginalEl autor Pratik Mandrekar

  5. 1

    No tengo una respuesta completa, pero he sido capaz de hacer que funcione usando Curl:

    curl http://spreadsheets.google.com/formResponse?formkey=dFpVLTVFY2t5dWdoNTZpNERwWDRxX2c6MQ&ifq --data entry.0.single=eric --data entry.1.single=pugh

    También, soy capaz de que funcione a través de Ajax con prototype, pero SÓLO en Safari.

    Yo también obtener el mismo 405 Método no permitido en Firefox. Aquí está mi script:

    function vote_for_synonym(word1, word2){
    word1 = encodeURIComponent(word1);
    word2 = encodeURIComponent(word2);
    
    $req = new Ajax.Request("http://spreadsheets.google.com/formResponse?formkey=dFpVLTVFY2t5dWdoNTZpNERwWDRxX2c6MQ", {
      method: 'post',
      contentType: 'application/x-www-form-urlencoded',
      onCreate: function(){
       Element.show('systemWorking');
      },
      onSuccess: function() {
        Element.show('thanks');
        Element.hide('systemWorking')
      },
      onFailure: function() {
        Element.show('error');
      }
    });           

    }

    También, mi onFailure nunca se llama, sólo onSuccess.

    OriginalEl autor Eric Pugh

  6. 0

    Pensé que tenía un par de cositas para añadir a esto, pero a su vez a NO resolver el problema.

    • definitivamente el uso de la entrada ‘nombre’ (no id.)
    • uno de los otros parámetros de los ‘ifq’, no está seguro de cómo funciona para combinar este con ‘formkey’ (una cadena es sólo una cadena, ¿verdad?)
    • completamente burlarse de el formulario de Google, agregar estos campos adicionales: pageNumber=0; backupCache=»; submit=Enviar

    Me sale el mismo ‘405 Método no permitido’ error, aunque…

    OriginalEl autor DanDan

  7. 0

    De su código de ejemplo – he cambiado un par de cosas – en primer lugar, el formulario de presentación de punto final /no &ifq necesario. Google probablemente ha actualizado las cosas. Ver el código fuente de su forma y el uso de la forma de acción de la dirección URL. en segundo lugar & críticamente su forma de tipos de entrada no se incluyen los identificadores (excepto el primero). Con estas cosas – el formulario enviado con éxito.

    secuencias de comandos de google docs envío del formulario

    <html>
    <body>
    <script type="text/javascript">
    var form = document.createElement("form");
    
    form.action = "https://docs.google.com/a/yourdomain.com/forms/d/XXXXXXXXXXXXXXXXXXXX/formResponse";
    form.method = "POST";
    form.id="ss-form";
    var repo = "https://github.com/fredericcormier/WesternMusicElements";
    var branch = "master";
    var email = "";
    
    form.innerHTML = ["<input id='entry_639106242' name = 'entry.639106242' value = '" + repo + "'/>","<input id='entry_1546762025' name = 'entry.1546762025' value = '" + branch + "'/>","<input id='entry_1509161732' name = 'entry.1509161732' value = '" + email + "'/>", ].join("");
    form.submit();
    
    alert(form.innerHTML);
    
    </script>
    
    </body>
    </html>

    OriginalEl autor johndpope

Dejar respuesta

Please enter your comment!
Please enter your name here