es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Copiar el texto del hipervínculo y el texto sin formato al portapapeles, luego pégalos en Excel utilizando Javascript/JQuery en varias celdas de una fila.

Mi objetivo es crear una función que, en una página específica, recolecte datos y los copie al portapapeles, para luego pegarlos en una hoja de Google o en una hoja de cálculo de Excel.

Los datos aparecen en diferentes lugares de una página web y se presentan de la siguiente manera:

<!-- En algún lugar de la página web -->
<div data-cy="a">
  <strong><a href="www.example.com">texto</a></strong>
</div>

<p><!-- Otro lugar en la página web -->
<div data-cy="b">
  <strong>otro texto</strong>
</div>

Además, necesito asignar algunos de mis simples cadenas, como var text = 'texto diferente'.

En una hoja de cálculo de Excel, los tres valores deben pegarse en tres campos coincidentes en una fila:

A B C
1 texto otro texto texto diferente

Aquí está mi código hasta ahora:
“`lang-js
var a = $('<em>[data-cy="a"]').html().replaceAll('\n','').replaceAll('<strong>','').replaceAll('</strong>','') // extraer 'a'.
var b = $('</em>[data-cy="b"]').html().replaceAll('\n','').split(/[><]/)[2]; // extraer 'b'.
var c = 'texto diferente';

var allCells = a + '\t' + b + '\t' + c; // usando el carácter tabulador para dividir entre celdas.

function copyToClipboard(str) {

<pre><code>function listener(e) {
e.clipboardData.setData("text/html", str);
e.clipboardData.setData("text/plain", str);
e.preventDefault();
}

document.addEventListener("copy", listener);
document.execCommand("copy");
document.removeEventListener("copy", listener);
</code></pre>

};

copyToClipboard(allCells);
“`

He probado tanto las versiones obsoletas como las más recientes de navigator.clipboard.writeText(), pero ninguna de ellas parece darme la opción de pegar los valores en diferentes celdas de la misma fila.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Función de JavaScript para extraer y copiar datos de una página web al portapapeles

    Objetivo

    El objetivo es crear una función de JavaScript que extraiga datos de una página específica, los combine con algunas cadenas simples y los copie al portapapeles. Más tarde, los datos se pueden pegar en una hoja de cálculo de Google o en una hoja de cálculo de Excel.

    Presentación de datos

    Los datos aparecen en diferentes lugares de una página web y se presentan en formato HTML de la siguiente manera:

    <!-- En algún lugar de la página web -->
    <div data-cy="a">
      <strong><a href="www.example.com">texto</a></strong>
    </div>
    
    <!-- En otro lugar de la página web -->
    <div data-cy="b">
      <strong>otro texto</strong>
    </div>
    

    Extracción y combinación de datos

    El código JavaScript debe ser capaz de extraer los datos del HTML, combinarlos con algunas cadenas simples y crear una cadena que represente todos los campos en una fila.

    var a = $('*[data-cy="a"]').html().replaceAll('\n','').replaceAll('<strong>','').replaceAll('</strong>','') // extraer 'a'.
    var b = $('*[data-cy="b"]').html().replaceAll('\n','').split(/[><]/)[2]; // extraer 'b'.
    var c = 'texto diferente';
    
    var allCells = a + '\t' + b + '\t' + c; // utilizando el carácter de tabulación para dividir entre celdas.
    

    Copiar al portapapeles

    La función debe utilizar el método Document.execCommand('copy') para copiar la cadena final al portapapeles.

    function copyToClipboard(str) {
    
      function listener(e) {
        e.clipboardData.setData("text/html", str);
        e.clipboardData.setData("text/plain", str);
        e.preventDefault();
      }
    
      document.addEventListener("copy", listener);
      document.execCommand("copy");
      document.removeEventListener("copy", listener);
    };
    
    copyToClipboard(allCells);
    

    Pegar datos

    Al pegar los datos en una hoja de cálculo de Excel, los tres valores deben pegarse en tres campos coincidentes en una fila:

    A B C
    1 [texto][1] otro texto texto diferente

    Conclusión

    El código de JavaScript combinado debe ser capaz de extraer los datos requeridos de la página web y copiarlos al portapapeles de manera adecuada. Más tarde, los datos se pueden pegar en una hoja de cálculo de Excel o en una hoja de cálculo de Google para su uso en análisis u otros propósitos.

Comments are closed.