Come creare un frammento di documento in Google Apps Script? [duplica]

0

Domanda

Sto creando un'applicazione in Google Fogli utilizzando Google App Script. L'app graffi di una pagina web e restituisce una pagina HTML per me come una stringa. Sto cercando di inserire in un DOM in modo che io possa utilizzare DOM query per trovare i dati che mi servono all'interno della pagina. Normalmente, si potrebbe fare creando un frammento di documento con document.createDocumentFragment()o la creazione di una staccata elemento con document.createElement()impostando quindi il innerHTML con la stringa HTML. Il problema è che il GAS non ha un document contesto.

Qualcuno ha idee per risolvere il problema, o forse qualche altro modo per eseguire query in un grande stringa di testo?

p.s. Il mio primo istinto era quello di trovare i dati che mi servono come API, ma non riesco a trovare nulla che soddisfi le mie esigenze. Screen scraping è la mia ultima risorsa.

AGGIORNA: Grazie per chi l'ha trovato e messo le domanda simile. Cheerio biblioteca per il GS è la soluzione corretta. https://stackoverflow.com/a/61928025/735374

1

Migliore risposta

0

Non è possibile creare una DOM a Google Apps Script, almeno non nel codice lato server.

Per query di stringa HTML si avrebbe bisogno di sapere esattamente dove, nella pagina di dati di cui avete bisogno sarà con identificabili sottostringhe come elemento contenente gli Id - ma spesso questi vengono generati e quindi non può essere conosciuto. HTML è anche notoriamente in grado di essere analizzato da RegEx.

Si potrebbe fare questo come un Fogli di add-on, se avere lo script eseguito in modo automatico, non è necessario. In questo caso il flusso di lavoro sarebbe lungo le linee di:

  • Raschiare i dati di HTML come una stringa
  • Creare un HTMLOutput oggetto utilizzando il createHtmlOutput(html) metodo
  • Aprire il codice HTML come una finestra o la barra laterale e fare la tua querySelector chiamate all'interno della finestra di dialogo. (In questo caso si dovrà aggiungere queste come codice all'interno di un <script> tag che viene eseguito al caricamento della pagina
  • Riportare i valori a Google Apps Script utilizzando google.script.run
2021-11-23 10:49:27

I hope this is helpful to you

Considerare la possibilità di spostare questa risposta qui
TheMaster

Grazie, ho finito per usare la forza bruta regex che è accaduto a lavorare per la mia situazione specifica, ma questi sono dei buoni consigli.
T Nguyen

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................